2012-01-11 201 views
2

我正在使用裁剪&调整图像大小功能,但我需要让它裁剪/调整大小只有透明背景的png文件,图像中至少有1个像素应该是透明的,以便图像被接受。是否可以检查PNG图像是否具有透明背景?

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

我正在使用PHP和GD库。

编辑:好的,我已经想出了如何使用GD库在PHP上执行此操作。看看它看起来多么干净! :)

<?php 

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

var_dump($alpha); 
?> 

任何想法如何做的X/Y coordenates一个数组来检查所有图像像素寻找至少1像素= $阿尔法= 127?

+0

这是可能的,例如,通过详尽的检查,但是有没有一个特定的PNG框架或语言你想要参考? – Tommy 2012-01-11 13:09:17

+0

像素一个一个地检查会花费太多的处理时间吗?我会试试看。 – user1143241 2012-01-11 13:48:26

+0

这取决于图像的大小...一般来说,如果你处理大尺寸的文件很多,那么是的 - 这将是太多的处理时间... – 2012-01-11 14:17:53

回答

1

那么你当然可以运行所有的像素,并检查他们是否有任何不是255.你使用什么语言和库?

+0

我使用GD和PHP/jQuery。任何想法如何做到这一点? – user1143241 2012-01-11 13:20:19

+0

恐怕不是。我已经完成了你想要在Java和Python中做的事情,但不知道多少PHP。不过,我会搜索一个图像库,看看他们提供什么。要么他们会有一个函数会告诉你,或者你可以用下面的伪代码找出它:是一个像素32位?是==可能是透明的。 (搜索是否8位可能,24不是)。如果可能是透明的,则获取图像的数据,循环遍历它,检查每个像素是否透明。 – vextorspace 2012-01-11 13:25:22

+0

我知道,我不是一个php savy,只是学习。我找不到任何东西,我认为GD库没有用于我的目的,我发现只有几个alpha或透明的函数,但没有什么适合我。也许我应该尝试用其他语言来完成整个事情? :(我会尝试使用imagecolorat,也许我可以使用该功能做些什么 – user1143241 2012-01-11 13:38:17