2015-07-10 74 views
1

我的目標如何使用PHP GD創建1位的位圖(黑色和只有白色,沒有灰色)

我有一個現有的PNG。它目前具有抗鋸齒功能,或換言之,具有灰色陰影。我希望圖像爲1位,換句話說,只使用黑白的顏色。我的目標是用PHP GD做到這一點。我必須用現有的圖像做到這一點,並不能使用imagecreatetruecolor從頭創建圖像。

我試圖

我發現,似乎最適合這個職位的職能是imagetruecolortopalette http://php.net/manual/en/function.imagetruecolortopalette.php

這裏是我想要做的

一個簡單的版本 ​​

這是關鍵線。 1是「應該保留在調色板中的最大顏色數量」。

imagetruecolortopalette($design_file, false, 1); 

行爲我越來越

的形象出現持平。我不確定我是否正確使用PHP GD,或者如果這個函數沒有做到我認爲的那樣。

其他想法

這些似乎也有希望。

imagecolordeallocate似乎我可以用它來釋放顏色,但不知道如何做到這一點,而無需調用它254次。

http://php.net/manual/en/function.imagecolordeallocate.php

imagecolorset好像我也許可以用它來設置調色板,但我不知道如何爲現有圖像做到這一點。

http://php.net/manual/en/function.imagecolorset.php

主要是我懷疑imagetruecolortopallette是最好的選擇,但是任何和所有的想法表示歡迎。

+0

的[創建在PHP 1比特的位圖(單色)]可能重複(http://stackoverflow.com/questions/11167706/create-1-bit-bitmap-monochrome-in- php) – MaxVT

+0

不,因爲那是從頭開始創建一個1位位圖,我需要用現有的圖像來完成。我會改變我的問題來澄清這一點。 – Goose

+0

對於1位圖像,顏色數量應爲2. 1色圖像是平坦的顏色塊。 – MaxVT

回答

1
$im = imagecreatefromstring($user_design); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagefilter($im, IMG_FILTER_CONTRAST, -1000); 
imagepng($im, 'path/filename.png'); 
imagedestroy($im); 

How do you convert an image to black and white in PHP

+1

然而,這工作,根據您鏈接的問題中的意見,我不得不將其更改爲'imagefilter($ im,IMG_FILTER_CONTRAST,-1000);'用'-1000'而不是'-100' – Goose

+0

此外,它即使我註釋掉了「IMG_FILTER_GRAYSCALE」和「IMG_FILTER_CONTRAST」,背景(或者路徑元素上的文本)也會變黑。然而,這是一個單獨的問題,你的答案完成了我所要求的。 – Goose

相關問題