Создание большого пальца JPG с PHP - PullRequest
1 голос
/ 12 апреля 2010

У меня проблемы с созданием миниатюры из загруженного изображения, моя проблема

(я) качество (ii) урожай

http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/large.jpg http://welovethedesign.com.cluster.cwcs.co.uk/phpimages/thumb.jpg

Если вы смотрите, качество очень низкое, и обрезка берется сверху и не является изменением размера исходного изображения, хотя размеры означают, что оно пропорционально

Оригинал имеет ширину 1600px и высоту 1100px.

Любая помощь будет оценена.

 $thumb =
 $targetPath."Thumbs/".$fileName;

    $imgsize =
 getimagesize($targetFile);  $image =
 imagecreatefromjpeg($targetFile);
  $width = 200; //New width of image   
 $height = 138; //This maintains
 proportions

  $src_w = $imgsize[0]; $src_h =
 $imgsize[1];



 $thumbWidth = 200;  $thumbHeight =
 138; // Intended dimension of thumb

 // Beyond this point is simply code.

 $sourceImage =
 imagecreatefromjpeg($targetFile);
 $sourceWidth = imagesx($sourceImage);
 $sourceHeight = imagesy($sourceImage);

 $targetImage =
 imagecreate($thumbWidth,$thumbHeight);
 imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage));

 //imagejpeg($targetImage,
 "$thumbPath/$thumbName");
 imagejpeg($targetImage, $thumb);

 chmod($thumb, 0755);

Ответы [ 3 ]

1 голос
/ 12 апреля 2010

Вы используете неправильную переменную для высоты изображения.

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbWidth,imagesx($sourceImage),imagesy($sourceImage));

Должно быть:

imagecopyresized($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbHeight,imagesx($sourceImage),imagesy($sourceImage));

Это должно улучшить качество изображения, но вы должны использовать imagecopyresampled для изменения размера и использовать параметр качества при использовании функции imagejpeg () при сохранении на диск.

1 голос
/ 12 апреля 2010

Каждый раз, когда вы создаете миниатюру, DPI изображения должно уменьшаться, и, следовательно, невозможно получить такое же качество, однако вы можете проверить imagecreatetruecolor (http://in2.php.net/manual/en/function.imagecreatetruecolor.php) для улучшения

0 голосов
/ 04 марта 2011

Вы бы не беспокоились, если бы использовали Thumbnailer .

$th=new Thumbnailer("your-photo.jpg");
$th->thumbSymmetricWidth(200)->save("your-thumb.jpg");

Качество превосходное. Вы также можете закруглить углы.

...