imagecreatefrompng() 生成黑色背景而不是透明区域?
在 PHP 中,imagecreatefrompng() 函数通常用于处理 PNG图像。然而,据观察,使用此函数时,PNG 透明度可能会转换为纯黑色。
要解决此问题,可以在使用 imagecreatetruecolor() 创建新画布后执行以下步骤:
通过实施这些修改后,PNG 图像中的 Alpha 通道信息将被保留,从而防止其转换为黑色背景。更新后的代码将类似于以下内容:
<code class="php"><?php // ... Before imagecreatetruecolor() $dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif // start changes switch ($stype) { case 'gif': case 'png': // integer representation of the color black (rgb: 0,0,0) $background = imagecolorallocate($dimg , 0, 0, 0); // removing the black from the placeholder imagecolortransparent($dimg, $background); // turning off alpha blending (to ensure alpha channel information // is preserved, rather than removed (blending with the rest of the // image in the form of black)) imagealphablending($dimg, false); // turning on alpha channel information saving (to ensure the full range // of transparency is preserved) imagesavealpha($dimg, true); break; default: break; } // end changes $wm = $w/$nw; $hm = $h/$nh; // ...</code>
以上是为什么 imagecreatefrompng() 产生黑色背景而不是透明区域?的详细内容。更多信息请关注PHP中文网其他相关文章!