【问题标题】:resizing with php imagick使用 php imagick 调整大小
【发布时间】:2010-08-26 09:30:59
【问题描述】:

我正在上传图片并将其大小调整为 300x200 像素

我正在使用 imagick 扩展,特别是 AdaptiveResizeImage() 函数。

使用 bestfit 上传时,图像的两侧会有很多空白(取决于纵向或横向)。

我宁愿它做的是调整大小以填充整个区域(无空白)并裁剪更长的长度(高度或宽度),即我宁愿丢失一些图像而不是有空白。

有没有一种简单的方法可以使用 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();

【问题讨论】:

    标签: php imagick


    【解决方案1】:

    也许你可以看看 ImageMagick 教程中的extent 标志。

    快速浏览一下,等效的 PHP 似乎是 Imagick::ExtentImage 但还没有从 php 中使用它。

    【讨论】:

    • 那是一个很大的帮助,你知道如何在imagick扩展中使用填充区域标志('^'标志)吗?
    • 很抱歉从未使用过 PHP 扩展。但快速浏览一下,他们确实有一个 setOption php.net/manual/en/function.imagick-setoption.php
    猜你喜欢
    • 2014-05-23
    • 2021-07-20
    • 1970-01-01
    • 2015-11-03
    • 2015-06-16
    • 2023-03-16
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多