MagicWand的缩略图
以前用GD做缩略图,效率不高,而且图片处理的功能太弱,刚才安装了MagicWand,发现真是太强了,效率和功能等等可以比ps强。gd简直像个小娃娃,用新东方老罗的话就是:太方便了太方便了。为了熟悉环境,顺手写了一个做缩略图函数,摘录如下
/**
* 按照最佳宽高比例生成图片的PNG缩略图
*
* 注:
* 缩放算法和ImageMagic convert -resize -thumbnial一样
* 缩略图的mtime和原始文件相同。
*
* @param string $srcFile 原始文件路径
* @param int $width 缩略图最大宽度(像素)
* @param int $height 缩略图最大高度(像素)
* @param string $thumbFile 缩略图的路径
* @return boolean
*
*/
function makeThumb($srcFile,$width,$height,$thumbFile){
$img= NewMagickWand();
if(!MagickReadImage($img,$srcFile)){
return false;
}
$oriHeight = MagickGetImageHeight($img);
$oriWidth = MagickGetImageWidth($img);
$xratio = $width/$oriWidth;
$yratio = $height/$oriHeight;
if($xratio < $yratio) {
$height = floor($oriHeight*$xratio);
}else{
$width = floor($oriWidth*$yratio);
}
//去掉颜色配置等注释信息
MagickRemoveImageProfiles($img);
//使用PointFilter方式缩放到5倍的目标大小
MagickSampleImage($img,$width*5,$height*5);
//Resize到目标尺寸,同时锐化处理
MagickResizeImage($img,$width,$height,MW_PointFilter,0.45);
MagickSetImageFormat($img,'image/png');
$ok = MagickWriteImage($img,$thumbFile);
DestroyMagickWand($img);
$mTime = filemtime($srcFile);
@touch($thumbFile,date('U',$mTime));
return $ok;
}
Comments
2 Responses to “MagicWand的缩略图”
Leave a Reply
你好,问你个问题,php_imagick.dll加载不了,不知道什么原因。这个问题困拢我4天了,能不能请您指点一下下,小弟谢了先。
错误提示:
PHP Warning: Unknown(): Unable to load dynamic library ‘C:\PHP\extensions\php_imagick.dll’ – 找不到指定的程序。 in Unknown on line 0
我的配置是 php4.4.4+iis5.0+windows2k
一般都是因为你没有安装imagemagic的dll,如果你不想单独安装imagemagick,你需要装static版本的php_imagick.dll,它把imagmagic都link进来了