我需要在PHP中創建一個灰度圖像。我不是在討論調色板中帶有灰度值的索引圖像,而是關於一個真實的灰度圖像。所不同的是在PNG(彩色型)的第26個字節:在PHP中創建一個真正的灰度PNG
我試圖imagefilter($im, IMG_FILTER_GRAYSCALE);
以及imagetruecolortopalette($im, false, 255);
0 - greyscale <-- THIS IS WHAT I NEED
2 - RGB
3 - RGB with palette
4 - greyscale + alpha
6 - RGB + alpha
(詳見How to check a PNG for grayscale/alpha color type?),但我得到的要麼是RGB灰度圖像(色類型2)或具有灰度調色板的RGB調色板圖像(顏色類型3)。我也嘗試用imagecreate()
而不是imagecreatetruecolor()
來初始化圖像,但是這隻會導致調色板圖像。
有什麼辦法用PHP的GD函數(或PHP中的任何其他函數)創建顏色類型爲0的灰度PNG?
這裏是一些不同的灰度圖像樣本,以顯示我的意思。它們看起來都一樣,但如果在PhotoShop中打開它們並查看圖像 - >模式設置,則會看到差異。也十六進制編輯器將揭示在第26字節的區別:
RGB,顏色類型2,3149個字節
RGB調色板,顏色類型3,3971個字節
真灰度圖像,顏色類型0,1105個字節< - 這是我所需要的
UPDATE 01:
這是我用來創建PNG的基本代碼。評論行是我嘗試過的替代方案:
//$im = imagecreate($image_size, $image_size);
$im = imagecreatetruecolor($image_size, $image_size);
//imagefilter($im, IMG_FILTER_GRAYSCALE);
//imagetruecolortopalette($im, false, 255);
imagepng($im, $imgPathName);
imagedestroy($im);
你的代碼看起來如何? – Breezer
@Breezer:請參閱我的OP中的「更新01」。 – Jpsy
我在猜你在找http://php.net/manual/en/function.imagecolorallocate.php 我認爲這個教程會幫助你,http://php.about.com/od /gdlibrary/ss/grayscale_gd.htm – Breezer