我的目标
我有一个现有的PNG。它目前具有抗锯齿功能,换句话说,具有灰色阴影。我希望图像为1位,换句话说,只使用黑色和白色。我的目标是用PHP GD做到这一点。我必须使用现有图像执行此操作,并且无法使用imagecreatetruecolor从头开始创建图像。
我正在尝试
我发现的最适合这项工作的功能是imagetruecolortopalette http://php.net/manual/en/function.imagetruecolortopalette.php
以下是我尝试做的简单版本
$user_design = base64_decode($_POST['input']);
$design_file = fopen('path/filename.png', 'w') or die("Unable to open file!");
imagetruecolortopalette($design_file, false, 1);
fwrite($design_file, $user_design);
fclose($design_file);
这是关键路线。 1是"应该在调色板中保留的最大颜色数。"
imagetruecolortopalette($design_file, false, 1);
行为我
图像显示不变。我不确定我是否正确使用PHP GD,或者这个功能是不是我认为它做了。
其他想法
这些似乎也很有希望。
imagecolordeallocate似乎我可以使用它来释放颜色,但不知道如何在不调用254次的情况下执行此操作。
http://php.net/manual/en/function.imagecolordeallocate.php
imagecolorset似乎我可以使用它来设置调色板,但我不知道如何为现有图像执行此操作。
http://php.net/manual/en/function.imagecolorset.php
大多数情况下,我怀疑imagetruecolortopallette是最好的选择,但欢迎任何和所有想法。
答案 0 :(得分:1)
$im = imagecreatefromstring($user_design);
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, -1000);
imagepng($im, 'path/filename.png');
imagedestroy($im);