【发布时间】:2012-03-05 13:55:07
【问题描述】:
我正在尝试使用 imagick 使用 php 删除图像的透明区域。
Image Magick 提供了trim 方法:
Imagick::trimImage
从图像中移除作为背景颜色的边缘。如果 Imagick 已针对 ImageMagick 版本 6.2.9 或更高版本进行编译,则此方法可用。
如何设置 Imagick 可以修剪的颜色?
以下脚本将背景颜色设置为灰色。 但是,修剪会移除蓝色背景颜色,如下所示。
$im = new Imagick( "1.png" );
// Set background color to grey
$im->setImageBackgroundColor( new ImagickPixel( "rgb(213,213,213)" ) );
$im->trimImage( 0 );
$im->writeImage('2.png');
有没有办法限制修剪颜色?
imagick 模块版本 => 2.1.1-rc1
【问题讨论】:
-
我怀疑文档使用的“背景颜色”定义可能比您预期的要宽松。我相信,ImageMagick 中的 Trim 本身通过获取图像的 角像素 的颜色并从那里开始工作来移除背景。这似乎就是你的情况。要确认这一点,请尝试使用manual 中的三色示例——创建一个连续三个纯色正方形的图像,运行修剪,看看是否只剩下中间的正方形。跨度>
-
在这个例子中,生成的图像是正方形的,很好......我要确保它是正方形的。有没有可以做到这一点的功能....如果图像是矩形并且“删除”或周围的背景生成一个矩形图像,我应该将它强制为正方形......