【问题标题】:PNG manipulation removes transparencyPNG操作删除透明度
【发布时间】:2011-09-09 12:25:34
【问题描述】:

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

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

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

原始图像如下所示:

通过 PHP(和那段代码)返回的代码如下所示:

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

【问题讨论】:

  • 我知道,通读所有这些,但它们似乎“保存”了图像等......我只想返回(传递)给浏览器
  • @Alvaro,我不是想操纵图像,只是将其传递给浏览器
  • 是的,我的错……暂时保存它并返回它可能是一种解决方法?
  • @bjorn 那么就没有必要通过php扔了!

标签: php


【解决方案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 传递文件只有在您还想做其他事情时才有意义,例如:

  • 限制对文件的访问
  • 保持计数器

【讨论】:

  • 谢谢! (将尽快接受)
猜你喜欢
  • 2015-01-11
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多