可以检查PNG图像是否具有透明背景?

时间:2012-01-11 13:06:19

标签: resize png transparent crop

我正在使用农作物和调整图像大小的功能,但我需要让它裁剪/调整仅具有透明背景的png文件,图像中至少有1个像素应该是透明的,以便接受图像。

可以检查PNG图像是否具有透明背景/像素吗?

我正在使用PHP和GD库。

编辑:好的,我已经弄清楚如何在带有GD库的PHP上执行此操作。看看它看起来多么干净! :)

<?php

$im = imagecreatefrompng("php.png");
$rgba = imagecolorat($im,1,1);
$alpha = ($rgba & 0x7F000000) >> 24;

var_dump($alpha);
?>

任何想法如何为x / y做一个数组协同检查所有图像像素,寻找至少1个像素= $ alpha = 127?

3 个答案:

答案 0 :(得分:1)

嗯,你当然可以浏览所有像素并检查它们中是否有任何像素不是255.你使用的是哪种语言和库?

答案 1 :(得分:0)

您可以为此打电话给imagemagick:

https://www.imagemagick.org/discourse-server/viewtopic.php?t=18596

  

转换my_image.png-格式“%[opaque]”信息:

     

错误

答案 2 :(得分:0)

在Imagemagick中处理此问题的一种方法是检查alpha通道的平均值。如果为1,则它是不透明的。否则,alpha通道在某些地方或部分透明度会有一定的透明度。

convert logo: -channel a -separate -format "%[fx:mean]" info:
1

convert logo: -transparent white -format "%[fx:mean]" info:
0.894907


因此,您可以这样做:

convert image -format "%[fx:mean==1?1:0]" info:


如果返回值为1,则它是完全不透明的。如果返回值为0,那么某处会有一些透明性。