在 PHP 中调整 PNG 大小时如何保持透明度?

Susan Sarandon
发布: 2024-11-23 22:46:10
原创
117 人浏览过

How Can I Preserve Transparency When Resizing PNGs in PHP?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板