首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用gdlib复制透明的PNG

用gdlib复制透明的PNG
EN

Stack Overflow用户
提问于 2012-09-24 22:58:17
回答 2查看 435关注 0票数 3

我现在对TinyMCE的Archiv-Plugin有一个问题。当上传图片时,它会为图片创建缩略图。但对于透明的PNG,背景是黑色的。我想,好吧,我想添加一些函数来保持透明度,但毕竟它不起作用。此外,我还阅读了有关stackoverflow的所有PHP文档和问题/答案,但它们对我没有帮助。

我已经将问题简化为几行代码。这并没有真正创建缩略图,但有相同的问题:所有具有透明背景的PNG都有一个黑色背景:

代码语言:javascript
复制
$thumb = imagecreatefrompng($originalPath);     
imagesavealpha($thumb, true);
imagealphablending($thumb, false);
imagepng($thumb, $thumbPath, 0);

当我创建一个新的空图像并用透明填充它时,它就会起作用。但是,当从任何现有的透明PNG创建它时,它会失败。我错过了什么吗?

如果这个问题不能快速解决,我将扩展存档插件,以选择使用ImageMagick...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-18 14:23:00

上周我也遇到了这个问题。经过几个小时的搜索和研究,我想这里有一些东西可以解释这个问题。

首先,png有几种格式类型:基于调色板的PNG和真彩色png。此外,有3种方法可以实现透明的PNG。

基于

  1. 调色板的带有透明度标志的PNG
  2. 真彩色(RGB)带有透明度标志的PNG
  3. 带有alpha通道的真彩色PNG (RGBA格式)

这就是为什么有时你的代码能正常工作,有时你的代码不能正常工作的原因。文章Transparency Concept in PNG详细解释了这三种类型的不同之处。

我已经试过你的代码了。它将完美地工作时,你的源png图像是真彩色PNG与alpha通道。否则,输出图像的透明部分将为黑色。

这里有两张png图片。底部有黑色区域的是Type2格式。另一种是RGBA格式。

票数 1
EN

Stack Overflow用户

发布于 2012-09-25 20:40:28

不要担心Andreas,你的脚本运行得很好,我刚刚测试过了。

我想你可以检查一下你正在使用的PHP的GD版本。我有GD版本2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12567633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档