给定一个图像文件,将其转换为老式 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()
电话是倒退的,但修复它也无济于事。请参阅下面的评论。