【问题标题】:How to create image from transparent image mangles color?如何从透明图像破坏颜色创建图像?
【发布时间】:2010-12-30 11:01:19
【问题描述】:

我正在构建一种系统,它只是从其他图像创建动态图像。我使用:imagecreatefromstring(file_get_contents("clown_avatar.png")); 创建图像并成功输出;但是,它会弄乱透明区域上的所有颜色。

查看原图:

Click

而且,这是 PHP 文件的结果:

Click

这里是源代码,只有几行:

<?php

$im = imagecreatefromstring(file_get_contents("clown_avatar.png"));
//$bg = imagecolorallocate($im,0,0,0); doesn't effect
Header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

我尝试用imagecolorallocate 添加背景色;但是,它根本没有影响。

【问题讨论】:

    标签: php image colors gd transparent


    【解决方案1】:

    这样做的原因是您正在丢弃 Alpha 层。通过这样做,图像原本不可见的部分现在变得可见。

    您想要做的是加载带有 alpha 的原始 PNG 图像,然后使用 imagecopymerged 将其复制到所需的图像(仅是背景颜色)上。

    【讨论】:

    • 好吧,怎么做仍然使用 imagecreatefromstring() 因为我必须从不同的扩展创建图像,这是最简单的方法。
    • 相反,解析 MIME 类型并分别处理每一个。如果编程工作量太大,请分别处理 PNG 和 GIF。
    • 感谢您的帮助 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2013-01-15
    • 2010-11-06
    • 2014-02-01
    • 2013-03-26
    • 2011-10-19
    • 2012-05-07
    相关资源
    最近更新 更多