我正在尝试使用 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
那样调整图像大小的解决方案。
最佳答案
使用以下代码片段保留透明度:
$im = new Imagick($imgPath);
$im->setImageFormat('png');
$im->writeImage('/files/thumbnails/new_title.png');
关于php - 使用 php Imagick 保留背景调整 PNG 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296559/