【发布时间】:2015-09-29 07:19:43
【问题描述】:
我的目标
我有一个现有的 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 位位图的方法,我需要对现有图像执行此操作。我会改变我的问题来澄清这一点。
-
对于 1 位图像,最大。颜色的数量应该是 2。1 色图像是一个扁平的颜色块。
-
我没有得到一个平面色块,我得到了原始图像,所以要么我没有正确使用 GD,要么这不是正确的功能。我不确定是哪个。我认为我无法使用 GD 文件之类的资源,而 GD 只接受字符串并且只能从头开始创建图像。任何有关这方面的知识将不胜感激。
标签: php image-processing bitmap image-manipulation php-gd