給定一個圖像文件,將其轉換爲舊式16種顏色的最佳方法是什麼?即白色,橙色,品紅色,淡藍色,黃色,青檸檬,粉紅色,灰色,淺灰色,青色,紫色,藍色,棕色,綠色,紅色和黑色。將圖像轉換爲預定義的16種顏色
我製作了一個小小的1x16像素圖像,其中包含所有可用作源代碼調色板的16種顏色(右圖),但我無法使用它。好像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()
電話是倒退,但修復它也沒有幫助。見下面的評論。
感謝您的回覆!不,保持原來的多色調色板。我上面的代碼確實改變了圖像並顯着減少了它的顏色數量,但它似乎將其減少到了它選擇的16種顏色(在我的例子中是藍色和灰色)。 – Viper007Bond
奇怪,因爲手冊中說imagepalettecopy(resource $ destination,resource $ source)。你可以添加一個示例源圖像和由此產生的圖像到你的問題? – John
對不起,我之前的評論是錯誤的。我的代碼中存在錯誤。然而,這兩個命令(我的意外錯誤和正確的順序)導致類似但錯誤的圖像。測試圖片:http://www.viper007bond.com/wordpress/wp-content/uploads/2013/05/20130511-110556.jpg正確的順序(圖片,調色板):http://pic.armedcats.net/b/ bl/blue/2013/05/15/imagepalette.png原始倒退順序(調色板,圖片):http://pic.armedcats.net/b/bl/blue/2013/05/15/paletteimage.png – Viper007Bond