Jump to content
  • 0

ресайз картинок


Дядя Саша
 Share

Question

Есть скрипт, который загружает на сервер картинку. Он сохраняет ее в папке, а в БД записывает ее адрес. Потом он эту картинку уменьшает (тоесть делает маленький эскизик) и сохраняет в ту же папочку + добавляет к имени файла е_. Вот такой скрипт. Только сохраняет он ее в ужасном качестве, скорее это потому, что я использовал ф-ию, не предназначенную для этого. Вся процедура выглядит так:

function resizeImage($src_file, $dest_file)
{
$imginfo = @getimagesize($src_file);
if ($imginfo == NULL)
return false;
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];
$destWidth = 140;
$destHeight = 160;
$src_img = imagecreatefromjpeg($src_file);
$dst_img = imagecreate($destWidth,$destHeight);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $destWidth,(int)$destHeight, $srcWidth, $srcHeight);
imagejpeg($dst_img, $dest_file, 100);
imagedestroy($src_img);
imagedestroy($dst_img);
return $dest_file;
}

imagecopyresized - изменяет размер, но у нее получается неважно. Что сделать чтобы эскиз можно было сохранить с приемлимым качеством?

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0
imagecopyresized - изменяет размер, но у нее получается неважно. Что сделать чтобы эскиз можно было сохранить с приемлимым качеством?

оригинал - http://denton.msk.ru/gallery/images/1.jpg

превьюшка - http://denton.msk.ru/gallery/preview/1.jpg

делается через искомый имеджкопиресайзд, претензий никаких... может глюки просто?

Link to comment
Share on other sites

  • 0

Вот. Давно уже писал такую функцию. То есть это метод класса. Так что поправьте до состояния самостоятельной функции.

	function resizeimg($outfile,$w,$h) {

$im=imagecreatefromjpeg($this->location);

$k = $w/$h;
$imk = $this->width/$this->height;

$newx = 0;
$newy = 0;

$neww = $this->width;
$newh = $this->height;

$im1=imagecreatetruecolor($w,$h);

if ($imk < $k) {
$newh = round($this->width/$k);
$newy = round(($this->height - $newh)/2);
}
if ($imk > $k) {
$neww = round($this->height*$k);
$newx = round(($this->width - $neww)/2);
}

imagecopyresampled(
$im1, $im,
0, 0,
$newx, $newy,
$w, $h,
$neww, $newh);

imagejpeg($im1,$outfile,70);

chmod($outfile,0777);

// header("Content-type: image/jpeg"); imagejpeg($im1); die();

imagedestroy($im);
imagedestroy($im1);

return true;
}

Уменьшает картинку и обрезает лишнее сверху/снизу или слева/справа.

Link to comment
Share on other sites

  • 0

Сделал так, внес небольшие поправки, теперь все здорово.

function resizeImage($src_file, $scketch_file)
{
global $config;
$imginfo = @getimagesize($src_file);
if (is_callable('imagegd2') && $config['thumb_width'] && $config['thumb_height'] && $imginfo) {
$source = imagecreatefromjpeg($src_file);
$target = imagecreatetruecolor($config['thumb_width'], $config['thumb_height']);
imagecopyresampled($target, $source, 0, 0, 0, 0, $config['thumb_width'], $config['thumb_height'], $config['picture_width'], $config['picture_height']);
imagejpeg($target, $scketch_file, 100);
}
imagedestroy($source);
imagedestroy($target);
return $scketch_file;
}

А дело то уже дошло до ImageMagick'a :-).

К стати я его скачал в исходниках, сейчас откомпилирую, а что дальше? Как с ним работать? Эт для работы с ним есть дллка imagick?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy