СообЧа > База Знаний > Интернет > Веб-строительство > PHP

Вопрос

Как из изображения, загружаемого пользователем через форму, сгенерить маленькие превьюшки?

Ответ

Как вариант, воспользуйся функцией GetImageSize(<путь к картинке>,<массив параметров>).
Элемент 0 массива содержит значение ширины картинки в пикселях, Элемент 1 — высоту.
Для создания тумба просто подели эти значения на одно и тоже число и не забудь округлить.

:
<?


$pic_size = GetImageSize("pic/picture.jpg");


$scale_factor = <Необходимое число>;
$small_w = round($pic_size[0]/$scale_factor);
$small_h = round($pic_size[1]/$scale_factor);


?>

<img src="pic/picture.jpg" width="<?echo"
$small_w";?> height="<?echo"$small_h";?>>, где




В предыдущем примере размер картинки в Кб остается одним и тем же. Есть такие функции, как:

$im = ImageCreateFromJPEG ($imgname);

потом получаем размеры загруженной картинки, потом создаем новую с уменьшенными размерами и копируем исходную картинку в нее такой командой:

ImageCopyResized int imagecopyresized (resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

*******

function img_kastr($path, $file_name, $width, $alt, $align){
// уменьшитель картинок: $file_name — имя файла, $path путь, $width желаемая ширина картинок. $pth = $path.$file_name;
if (ereg("^(.*)\\.(jpg|jpe|png)$", "$pth")){
$f=GetImageSize("$pth");
if ($f[0]>$width){
$heigth = intval(round($width*$f[1]/$f[0]));
}
else {
$heigth = $f[1];
$width = $f[0];
}
$dst_im = imageCreate($width, $heigth);
switch($f[2]) {
case 1:
$src_im = imageCreateFromGIF($pth);
break;
case 2:
$src_im = imageCreateFromJPEG($pth);
break;
case 3:
$src_im = imageCreateFromPNG($pth);
break;
}
imageCopyResized($dst_im, $src_im, 0, 0, 0, 0, $width, $heigth, $f[0], $f[1]);
$replace = "\\1_".$width.".jpg";
$file_name =
eregi_Replace('([[:alnum:]])(\\.[[:alnum:].]*)?$', $replace, $file_name);
// Header("Content-type: image/jpeg");
imageJPEG($dst_im, 'files/'.$file_name);
?><img src="/files/<?echo $file_name?>" alt="<?echo
$alt?>" border=0 align=<?echo $align?>><?
}
}


antua



Copyright © 2000-2004 Сообщество Чайников
Контактная информация