我正在为我正在制作的网站编写图像脚本,对于其中一种图像模式,我需要裁剪图像并为其制作圆角。这是我现在使用的代码:
$img = new Imagick();
$img->readImageBlob($data);
$img->resizeImage($width, $height, $img->FILTER_GAUSSIAN, 1);
$canvas = new Imagick();
$canvas->newImage($size[0], $size[1], new ImagickPixel('white'));
$canvas->compositeImage($img, imagick::COMPOSITE_OVER, 0, 0);
$canvas->roundCorners(10, 10);
$canvas->setImageFormat('png');
然而,如上所示,所得到的图像大约是半透明的,除了边缘周围的10-ish px边框,由roundCorner创建我假设。我已经尝试了很多不同的方法,包括直接裁剪$ img和圆角上的roundCorner,但结果是没有圆角。
我怀疑复合影像是这部剧中的小偷,但我不能肯定地说。任何人吗?
编辑:更正:如果我使用裁剪和圆形解决方案,我最终会得到圆角,但它们背景为黑色。这是我在这里使用的代码。有人发现错误/解决方案吗?
$img = new Imagick();
$img->readImageBlob($data);
$img->resizeImage($width, $height, $img->FILTER_GAUSSIAN, 1);
$img->cropImage($size[0], $size[1], 0, 0);
$img->roundCorners(10, 10);
编辑2: 作物和圆形分辨率的解决方案是确保它是一个png,因此它具有alpha支持。但是,结果与我原始代码生成的结果相同。
编辑3: 在我的部署服务器上尝试了这个脚本,并且它按照我的意愿工作,所以看起来像macports附带的imagick / php-imagick版本存在一些问题。谢谢你的帮助!
答案 0 :(得分:0)
你可以告诉imagemagick给你一个带有
的alpha背景$img->setImageAlphaChannel ( imagick::ALPHACHANNEL_TRANSPARENT )
或尝试在进行任何转换之前明确地将图像格式设置为PNG24。
此处订单很重要,在曝光背景之前,图片需要一个Alpha通道。
答案 1 :(得分:0)
当前的macports附带了Imagick / php-imagick版本的问题。没有为我的计算机解决它,但脚本在我的部署服务器上按预期工作。