2012-01-11 141 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