【发布时间】:2013-06-25 11:51:10
【问题描述】:
我正在尝试使用 cropThumbnailImage 调整图像大小。我使用cropThumbnailImage,因为它调整为原始图像的较短长度,并在两侧均等地裁剪较长边的图像,以便图像的中心部分保持未裁剪。这适用于 jpg 图像,但对于 png 图像,调整大小的 png 会得到黑色背景。
以下是我使用的代码。
$image = new \Imagick($src);
// resize & crop
$image->cropThumbnailImage($width, $height);
// save new resized file
$image->writeImage($dest);
为以下 png 图像运行此代码。
http://tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png http://www.cs.csubak.edu/~mcabrera/CS211/transparent.png http://www.tcarms.com/media/assets/productPhotos/006_G2%20Contender/png/Pistol_12in_Ribbed_Blued_2720.png
根据需要调整输出图像的大小,但 png 图像变为黑色背景。
尝试从here添加以下行,但没有奏效。
imagealphablending( $image, false );
imagesavealpha( $image, true );
网络上还有其他实现 png 图像大小调整的解决方案,但我没有找到像 cropThumbnailImage 那样调整图像大小的解决方案。
【问题讨论】:
-
Aaa 你到底期待什么? JPEG 没有透明度。
-
谷歌更难?我刚刚进行了谷歌搜索,并在第一次尝试时得到了一些有用的结果。还要检查您的版本号。正如 Carsten 所说,您正在使用 PNG 图像的 JPEG 压缩。 JPEG 不支持透明度。
-
JPG 不透明...请参考 PNG 和 Gif 文件...
-
您的代码:COMPRESSION_JPEG - JPEG 不是 PNG,它没有透明度。使用此代码,您可以将 PNG 转换为 JPEG。如果你想有透明度,你必须维护扩展......
-
感谢大家指出压缩。我将其删除并进行了测试。图像似乎仍然是黑色背景。