使用 PHP 的 GDlib 调整具有透明度的 PNG 大小
处理 PNG 文件时,保留图像透明度至关重要。虽然 GDlib 提供图像处理功能,但在保留透明度的情况下调整 PNG 大小可能会带来挑战。
使用 GD 的 imagecopyresampled 函数时遇到的一个问题是原始 PNG 中的透明区域被替换为纯色。尽管将 imagesavealpha 设置为 true,还是会发生这种情况。
要解决此问题,正确指定 alpha 设置至关重要。在 PHP 中,Alpha 设置适用于目标图像,而不是源图像。通过调整目标图像的 Alpha 属性,我们可以实现透明度保留:
imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true );
imagealphablending(false) 禁用任何混合并尊重图像的 Alpha 通道。 imagesavealpha(true) 确保在输出中保留 PNG 的 alpha 通道。
这是一个修改后的 PHP 代码片段,其中包含这些调整:
$uploadTempFile = $myField[ 'tmp_name' ] list( $uploadWidth, $uploadHeight, $uploadType ) = getimagesize( $uploadTempFile ); $srcImage = imagecreatefrompng( $uploadTempFile ); $targetImage = imagecreatetruecolor( 128, 128 ); imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true ); imagecopyresampled( $targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight ); imagepng( $targetImage, 'out.png', 9 );
此修改后的代码应该有效地调整 PNG 的大小图像,同时保持透明度。请注意,它不能保证对所有情况都是完美的,但它提供了一个坚实的起点。
以上是如何使用 PHP 的 GDlib 调整 PNG 的透明度并保留 Alpha 通道?的详细内容。更多信息请关注PHP中文网其他相关文章!