【问题标题】:PNG has black backgroundPNG有黑色背景
【发布时间】:2013-04-23 02:25:42
【问题描述】:

我正在使用一个库来轻松保存图像。

http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

但问题是它保存了黑色背景的透明png。我已经搜索并找到了一些应该有用但不适合我的东西。

imagecolortransparent() 通常应该这样做。 但对我来说,我仍然看到黑色背景。

我做错了什么?

$imagename = $_FILES['file']['name'];           
$target = "source/images/".$imagename;
$image->save($target);


function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null){

  if( $image_type == IMAGETYPE_PNG ){

      $image = $this->image;

      $black = imagecolorallocate($image, 0, 0, 0);
      imagecolortransparent($image, $black);

      imagepng($image,$filename);
  }

}

【问题讨论】:

  • 您使用的是 PNG 还是 JPG 图片?
  • 这令人困惑$image_type=IMAGETYPE_JPEG
  • @HamZaDzCyber​​DeV 为什么默认值会让人困惑?
  • @tlenss 显然因为他没有将该值设置为 PNG ?
  • 这并不令人困惑,只是在他的代码中不清楚......很好!

标签: php image-processing png


【解决方案1】:

你应该改变

$black = imagecolorallocate($im, 0, 0, 0);

$black = imagecolorallocate($image, 0, 0, 0);

尝试设置图像 alpha 混合

imagealphablending($image, false);
imagesavealpha($image, true);

【讨论】:

  • 已编辑,不改变结果强硬
  • 同样,我在 colorallocate 之前和之后添加了这两行。没有结果
  • 那么也许可以听取 HamZa 的建议并添加开关。在那种情况下,您的示例代码几乎被破坏了......
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 2016-12-29
  • 2023-03-20
  • 2017-11-10
  • 2018-03-15
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多