php程序中改变图片大小的函数大多数人都想到用imagecopyresized(),不过经过测试比较发现,使用imagecopyresampled()改变的图片质量更高。
下面我们来看看两者的比较结果。
原图:
使用imagecopyresized()将图片缩小一半
代码:
<?php
// File and new size$filename = 'test.jpg';$percent = 0.5;// Content typeheader('Content-Type: image/jpeg');// Get new sizeslist($width, $height) = getimagesize($filename);$newwidth = $width * $percent;$newheight = $height * $percent;// Load$thumb = imagecreatetruecolor($newwidth, $newheight);$source = imagecreatefromjpeg($filename);// Resizeimagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);// Outputimagejpeg($thumb);?>改变后的图片:
使用imagecopyresampled()将图片缩小一半
代码:
<?php
// The file$filename = 'test.jpg';$percent = 0.5;// Content typeheader('Content-Type: image/jpeg');// Get new dimensionslist($width, $height) = getimagesize($filename);$new_width = $width * $percent;$new_height = $height * $percent;// Resample$image_p = imagecreatetruecolor($new_width, $new_height);$image = imagecreatefromjpeg($filename);imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);// Outputimagejpeg($image_p, null, 100);?>改变后的图片:
可以看出,imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。