鉴于图像文件,将它转换为旧学校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()
电话是倒退的,但修复它也无济于事。见下面的评论。
答案 0 :(得分:1)
更改
imagepalettecopy($ palette,$ image);
到
imagepalettecopy($ image,$ palette);
工作?
修改强>
我尝试使用以下调色板作为gif:
我认为这些颜色与你的颜色不同。 (我从图片中挑选了果岭......)
这是我尝试过的代码(这里没有什么区别):
<?php
$palette = imagecreatefromgif('palette-gif-03.gif');
$source = imagecreatefromjpeg('test-image-01.jpg');
$source_w = imagesx($source);
$source_h = imagesy($source);
$image = imagecreate($source_w, $source_h);
imagepalettecopy($image, $palette);
imagecopy($image, $source, 0, 0, 0, 0, $source_w, $source_h);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($imgage);
imagedestroy($palette);
imagedestroy($source);
?>
这是我的结果:
如果我要删除图片,请告诉我?!!