在 PHP 中调整 PNG 大小时保持透明度
在 PHP 中调整具有透明背景的 PNG 图像大小时,确保透明度是至关重要的维持。但网上很多代码示例未能正确实现这一点,导致调整大小后背景变黑。
要解决这个问题,需要对代码进行具体调整。在执行 imagecolorallocatealpha() 函数之前,必须将混合模式和保存 Alpha 通道标志分别配置为 false 和 true。
以下是包含这些调整的更新代码片段:
<?php /** * https://stackoverflow.com/a/279310/470749 * * @param resource $image * @param int $newWidth * @param int $newHeight * @return resource */ public function getImageResized($image, int $newWidth, int $newHeight) { $newImg = imagecreatetruecolor($newWidth, $newHeight); imagealphablending($newImg, false); // Turn off blending imagesavealpha($newImg, true); // Turn on save alpha channel $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent); $src_w = imagesx($image); $src_h = imagesy($image); imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h); return $newImg; } ?>
通过这些修改,代码应该可以有效地保持 PNG 图像的透明度调整大小。
注意:此更新的代码仅适用于背景不透明度为 0 的图像。如果图像的不透明度介于 0 到 100 之间,则调整大小后背景将显示为黑色。
以上是在 PHP 中调整 PNG 大小时如何保持透明度?的详细内容。更多信息请关注PHP中文网其他相关文章!