0

首先,我想说我在 PHP GD 中阅读了很多关于透明的主题。例如:

php GD 创建透明png图片

使用PHP的GDlib imagecopyresampled时可以保留PNG图像透明度吗?

甚至在手册中发表评论。为了证明我不只是阅读,而是试图理解,下面我将链接粘贴到我发现的完全错误的评论。他写的东西与手册中关于imagesavealpha的说法完全相反(你必须取消设置alpha混合(imagealphablending($i'm,false))才能使用它。)

http://pl.php.net/manual/en/function.imagepng.php#85748

http://php.net/manual/en/function.imagesavealpha.php

我想保持透明,直到我保存图像。看代码(它只是一个例子):

$base = imagecreatetruecolor(500,500);
  imagealphablending($base, false);
  imagesavealpha($base, true);
$image = base64_decode($image);
$image = imageCreateFromString($image);
imagecopyresampled($base,$image,0,0,0,0,500,500,500,500);
//to this step I have transparent
//now if I save image everything is okay
$avatar = imagescale($avatar,101,101);//lost transpratent
imagepng($base,$savePath,0);

我知道我可以在 imagecopyresampled() 操作中缩放图像,并且不需要 2 次操作。但我在上面写的只是模式。

有人可以写下如何在每次操作后保持透明度。

4

1 回答 1

0

这是我不久前编写的用于调整图像大小并保持其透明度的函数:

function resize($image, $src_width, $src_height, $width, $height)
{
      if(!$image) return FALSE;

      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
      return $new_image;
}

我也曾在透明度方面遇到过困难,但最后我想出了上面的代码。我认为这对你有用。

于 2013-09-15T23:58:45.253 回答