首页  >  文章  >  后端开发  >  为什么在 PHP 中使用“imagecreatefrompng()”PNG 图像会变黑?

为什么在 PHP 中使用“imagecreatefrompng()”PNG 图像会变黑?

Susan Sarandon
Susan Sarandon原创
2024-11-03 14:46:30440浏览

Why are PNG images turning black with `imagecreatefrompng()` in PHP?

使用 imagecreatefrompng() 将 PNG 图像变成黑色

问题:

用户遇到了使用 GD 库创建缩略图时,PHP 的 imagecreatefrompng() 函数将 PNG 图像中的透明区域转换为纯黑色的问题。

PHP 缩略图创建代码:

<code class="php">function cropImage($nw, $nh, $source, $stype, $dest) {
  // ...
  switch($stype) {
    case 'png':
      $simg = imagecreatefrompng($source);
      break;
    // ...
  }
  // ...
}</code>

解决方案:

要解决此问题,需要在 imagecreatetruecolor() 之前执行其他步骤,特别是对于 PNG 和 GIF 图像。这些步骤涉及:

<code class="php">// Before imagecreatetruecolor()

$dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif

// Additional steps for PNG and GIF

switch ($stype) {

    case 'gif':
    case 'png':
        // Black color
        $background = imagecolorallocate($dimg , 0, 0, 0);
        // Remove black from placeholder
        imagecolortransparent($dimg, $background);
        // Turn off alpha blending
        imagealphablending($dimg, false);
        // Turn on alpha channel saving
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}</code>

通过实施这些附加步骤,在使用 imagecreatefrompng() 创建缩略图时将保留 PNG 图像中的透明区域。

以上是为什么在 PHP 中使用“imagecreatefrompng()”PNG 图像会变黑?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn