用php创建jpg thumb

时间:2010-04-12 11:57:53

标签: php image gd thumbnails

我在上传的图片中创建缩略图时出现问题,我的问题是

(i)质量 (ii)作物

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

如果你看起来质量非常差,而且作物是从顶部拍摄的,并不是原始图像的大小调整,尽管尺寸意味着它是成比例的。

原作1600px1100px高。

任何帮助都将不胜感激。

 $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 个答案:

答案 0 :(得分:1)

每当你创建一个缩略图时,图像的DPI必须变低,因此不可能具有相同的质量,但你可以检查imagecreatetruecolor(http://in2.php.net/manual/en/function.imagecreatetruecolor.php)以进行改进

答案 1 :(得分:1)

您使用了错误的变量作为图像高度。

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));

这应该可以提高图像质量,但是在保存到磁盘时使用imagejpeg()函数时,应该使用imagecopyresampled进行大小调整并使用quality参数。

答案 2 :(得分:0)

如果你使用Thumbnailer,你不会担心。

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

质量非常好。你也可以绕过角落。