技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

php改变图片大小使用imagecopyresampled()质量更高

作者:admin    时间:2012-11-7 16:45:34    浏览:

php程序中改变图片大小的函数大多数人都想到用imagecopyresized(),不过经过测试比较发现,使用imagecopyresampled()改变的图片质量更高。

下面我们来看看两者的比较结果。

原图:

使用imagecopyresized()将图片缩小一半

代码:

<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;
// Content type
header('Content-Type: image/jpeg');
// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output
imagejpeg($thumb);
?>

改变后的图片:

使用imagecopyresampled()将图片缩小一半

代码:

<?php
// The file
$filename = 'test.jpg';
$percent = 0.5;
// Content type
header('Content-Type: image/jpeg');
// Get new dimensions
list($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);
// Output
imagejpeg($image_p, null, 100);
?>

改变后的图片:

可以看出,imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。

改变图片大小,除了上述两种方法外,你还可以用更为好用的函数,可以看看这篇文章:php实现的非常好用的图片大小调整(image resize)函数

注意:

在执行以上代码时,如果出现Cannot modify header information - headers already sent这个错误提示,那么需要修改下php.ini这个文件,把output_buffering设为4096就行了,output_buffering默认为off的。php.ini这个文件在php目录下,但务必记得修改后把它拷贝到windows目录下(如:C:\windows\)覆盖原来的文件。之后重启iis。(如何重启IIS?在dos里输入iisreset /restart 执行一下即可)

标签: image  
  • IT热文
  • 站长推荐