Моя цель
У меня есть 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
В большинстве случаев я подозреваю, что лучше всего подойдет imageetruecolortopallette, но любые идеи приветствуются.