【发布时间】:2016-05-24 17:36:00
【问题描述】:
我正在使用 php imagemagick 来生成缩略图。
- 如果我给出最佳拟合,并且尺寸为 50x50,它会生成 36x50 尺寸的图像(质量好)
- 如果我将 bestfit 设为 false 且尺寸为 50x50,则会生成 50x50 尺寸的图像(质量差)
我需要一个解决方案,无论图像大小(我将上传 200X200 的最小值)我给出 它需要在 ImageMAgick 中提供具有良好质量和技术的 50x50 吗??
【问题讨论】:
-
请展示一些代码,最好是示例
-
“质量好”是指“保持比例”吗?例如,如果您上传 300x200 的图片,您希望将其调整为 75x50,然后裁剪为 50x50(在这种情况下,通过从左侧移除 13px 和从右侧移除 12px)?
-
$originalImage = tmp 图片上传 newImage = $this->rootpath.'/'.$location_1.'/'.$thumb['name'].$name; //传递imagepath和width&height需要生成thumb $this->makeThumb($originalImage,$newImage,50,50,true) //上面最后一个参数是bestfit(true/false)
-
函数 makeThumb($originalImage,$newImage,$width,$height,$bestfit) { $width = intval($width); $height = intval($height); $im = 新的想象(); try{ /* 读取图像文件 / $im->readImage($originalImage); / 缩略图图片(宽度100,保留尺寸)/ $im->thumbnailImage($width,$height,$bestfit); / 将缩略图写入磁盘 / $im->writeImage($newImage); / 获取上传图片的大小/ $size = getimagesize($newImage); / 获取当前高宽差*/ } catch (ImagickException $e) { return false; } 返回真; $im->destroy(); }
-
* 如果我上传 300x200 .. 它需要找到该图像的中心点并需要从那里计算 50x50 .. 需要删除左右一些像素
标签: php imagemagick