如何使用PHP GD创建1位位图(仅黑白,无灰)

时间:2015-07-10 13:51:05

标签: php image-processing bitmap image-manipulation php-gd

我的目标

我有一个现有的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是最好的选择,但欢迎任何和所有想法。

1 个答案:

答案 0 :(得分:1)

$im = imagecreatefromstring($user_design);
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, -1000);
imagepng($im, 'path/filename.png');
imagedestroy($im);

How do you convert an image to black and white in PHP