PHPでグレースケールイメージを作成する必要があります。私は、そのパレットにグレースケール値を持つインデックス付きイメージではなく、真のグレースケールイメージについて話しています。差はPNG(カラータイプ)の26バイトである:PHPで真のグレースケールPNGを作成する
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?を参照してください)
私はimagefilter($im, IMG_FILTER_GRAYSCALE);
などimagetruecolortopalette($im, false, 255);
を試みたが、私が得るすべては、RGBグレースケール画像(カラーのどちらかでありますタイプ2)またはグレースケールパレット(カラータイプ3)を使用したRGBパレットイメージ。私はimagecreatetruecolor()
の代わりにimagecreate()
でイメージを初期化しようとしましたが、これもまたパレットイメージにつながります。
PHPのGD関数(またはPHPの他の関数)でカラータイプ0のグレースケールPNGを作成する方法はありますか?
ここに、私が意味するものを示すために、さまざまなグレースケールイメージのいくつかのサンプルがあります。それらはすべて同じように見えますが、PhotoShopでそれらを開き、Image - > Modeの設定を見ると、違いがわかります。また、進エディタは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の "UPDATE 01"を参照してください。 – Jpsy
私はあなたがhttp://php.net/manual/en/function.imagecolorallocate.phpを探していると思っています 私はこのチュートリアルが道に沿って助けてくれると思います。http://php.about.com/od /gdlibrary/ss/grayscale_gd.htm – Breezer