PNG操作消除了透明度

时间:2011-09-09 12:25:35

标签: php

我只是想通过PHP返回一个PNG图像,但我有一个问题,透明度不正确。 (基本上一个PHP文件将能够返回我的任何图像。)

我使用简单的代码返回图片:

<?php
    $im = imagecreatefrompng("images/fakehairsalon.png");
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
?>

原始图片如下所示: Original image

通过PHP(和那段代码)返回的那个看起来像这样: Messed up image

我能做些什么来阻止这种情况并让图像正常显现?

1 个答案:

答案 0 :(得分:1)

user comment中所述,您必须这样做:

<?php
$im = imagecreatefrompng("borrame.png");
header('Content-Type: image/png');

imagealphablending($im, true); // setting alpha blending on
imagesavealpha($im, true); // save alphablending setting (important)

imagepng($im);
imagedestroy($im);
?>

更新:这个答案假设您的代码不是来自您正在使用的更大的脚本进行动态图像处理。

如果您不想更改原始文件,这显然会浪费内存和CPU周期。您可以使用file system functions将其作为常规文件进行阅读,例如readfile()

值得注意的是,如果你想要做其他事情,使用PHP来传递文件也是有意义的,例如:

  • 限制对文件的访问
  • 保持柜台