与えられた画像ファイルを古い学校の 16 色に変換する最良の方法は何ですか? すなわち、白、オレンジ、マゼンタ、ライトブルー、イエロー、ライム、ピンク、グレー、ライトグレー、シアン、パープル、ブルー、ブラウン、グリーン、レッド、ブラックです。
ソース パレットとして使用できる 16 色すべてを含む 1x16 ピクセルの小さな画像を作成しましたが (そうですか?)、うまく使いこなせません。それimagepalettecopy()
は私が望むもののようです(16ピクセルデータ画像のカラーパレットを取り、それを新しい画像にコピーします)が、私が思いついたコードは機能していません:
<?php
$palette = imagecreatefrompng( __DIR__ . '/palette.png' );
$source = imagecreatefromjpeg( __DIR__ . '/testimage.jpg' );
$source_w = imagesx( $source );
$source_h = imagesy( $source );
$image = imagecreate( $source_w, $source_h );
imagepalettecopy( $palette, $image );
imagecopy( $image, $source, 0, 0, 0, 0, $source_w, $source_h );
header('Content-Type: image/png');
imagepng( $image );
選択した16色か何かに変換するだけのようです(よくわかりません)。
私は何が欠けているか、間違っていますか?
編集:私のimagepalettecopy()
呼び出しは逆ですが、修正しても役に立ちません。以下のコメントを参照してください。