Просмотр полной версии : как сделать превью изображения средствами чистого пхп без расширений ?
Я знаю про exif_thumbnail
но её нет в стандартной инсталляции пхп.
Как вы считаете, стоит ли её использовать - может это расширение достаточно распространено, либо есть какие-то другие средства создания превью?
nc.STRIEM
17.10.2006, 22:52
Есле я тя правильно понял то вот:
функция меняющая разрешение картинки
Функция imgresize("имя исходного файла", " имя генерируемого файла", " ширина ", "высота" ," качество генерируемого JPEG, по умолчанию - максимальное ","цвет фона, по умолчанию - белый")
************************************************** *********************************/
function imgresize($src, $dest, $width, $height, $quality=100, $rgb=0xFFFFFF)
{
if (!file_exists($src)) return false;
$size = getimagesize($src);
if ($size === false) return false;
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];
$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);
$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$isrc = $icfunc($src);
$idest = imagecreatetruecolor($new_width, $new_height);
imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);
for($i=strlen($dest)-1;$i>=0;$i--)
if($dest[$i]=='.')
break;
$i++;
$ftypeg="";
while($i<strlen($dest))
{
$ftypeg.=$dest[$i];
$i++;
}
if(strtolower($ftypeg)=="jpg")
$ftypeg="jpeg";
$ftypeg="image".$ftypeg;
if (!function_exists($ftypeg)) return false;
$ftypeg($idest, $dest, $quality);
imagedestroy($isrc);
imagedestroy($idest);
return true;
}
куда легче делать наподобии мозайки только наоборот - делаем целочисленно деление высоты исходной на высоту нужной == dx(аналогично для ширины). далее делаем цикл по матрице картинки (пох джпег или что другое в пхп сила) с пробегом dx и вставляем в новую кратинку размерами нужной с пробегом в 1 пиксель. ну идея думаю понятна.
куда легче делать наподобии мозайки только наоборот - делаем целочисленно деление высоты исходной на высоту нужной == dx(аналогично для ширины). далее делаем цикл по матрице картинки (пох джпег или что другое в пхп сила) с пробегом dx и вставляем в новую кратинку размерами нужной с пробегом в 1 пиксель. ну идея думаю понятна. ага, и на выходе получаем говно.
>>>Я знаю про exif_thumbnail
но её нет в стандартной инсталляции пхп.
Эта функция не входит в модуль GDlib. Она доступна если PHP(от 4й версии) скомпилирован с опцией --enable-exif.
imagecopyresampled если я правильно понимаю задачу...
nc.STRIEM
18.10.2006, 22:58
imagecopyresampled если я правильно понимаю задачу...
Эта функция береться за основу, но чеб картинка нормальной получилась, над еще пару нюансов учесть.. (см. выше)
если вообще без модулей, уважаемый дикс, то тебе будет проще убиться ап стенку =)
Gd - это расширение.
>>>Я знаю про exif_thumbnail
но её нет в стандартной инсталляции пхп.
вот и я про тоже. но, ёпт, ответьте мне, если знаете:
часто на серверах хостеров попадается пхп скомпилированный с этим эксифом?
за функцию спасиба, попробую попользовать :)
Дикс, вот посмотри вот етот (http://zxcvasd.jino-net.ru/16540.zip) "движок" для фоток без наворотов зато сам автоматически создаёт превью vj; чё найдёш полезного для себя!
всё, уже сделал с функцией nc.Striema
потом разберусь в её устройстве и под себя переделаю, чтоб не плагиатничать, а пока надо дипломную работу поскорее закончить =)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot