2
我上传图像并将其大小调整为300x200像素使用php imagick调整大小
我使用的是imagick扩展,特别是adaptiveResizeImage()函数。
使用最佳拟合有很多在画面的两侧空白的上传时(取决于纵向或横向)。
什么,我宁愿它做的是调整,以填补整个区域(无空格),并裁剪长度较长(高度或宽度),即我宁愿失去比拥有一些空白图像。
有一种简单的方式与imagick扩展做到这一点?
编辑:我设法做我所需要的,但必须有一个更好的办法
header('Content-type: image/jpeg');
// target sizes
$target_width = 300 ;
$target_height = 100 ;
// create new image
$image = new Imagick('test.jpg');
// get current size and calculate diffences from target sizes
$size = $image->getImageGeometry();
$size['width_diff'] = $target_width/$size['width'] ;
$size['height_diff'] = $target_height/$size['height'] ;
// resize by smallest size
if($size['width_diff']>=$size['height_diff'])
{
$width = $target_width ;
$height = $size['height']*$size['width_diff'] ;
}
else
{
$width = $size['width']*$size['height_diff'] ;
$height = $target_height ;
}
// get offsets
$x = ($width-$target_width)/2 ;
$y = ($height-$target_height)/2 ;
// resize and offset image
$image->adaptiveResizeImage($width, $height) ;
$image->extentImage($target_width, $target_height,-$x,-$y);
// output and clean up
echo $image ;
$image->clear();
$image->destroy();
这是一个很大的帮助,你知道如何使用的imagick扩展填充区域标志(“^”标志)? – mononym 2010-08-26 10:08:01
对不起,没有使用PHP扩展。但从快速的样子他们确实有一个setOption http://www.php.net/manual/en/function.imagick-setoption.php – renick 2010-08-26 11:40:14