Моя цель
У меня есть PNG. В настоящее время он имеет сглаживание, или, другими словами, оттенки серого. Я хочу, чтобы изображение было 1 бит, или, другими словами, только с использованием цветов черного и белого. Моя цель – сделать это с помощью PHP GD. Я должен сделать это с существующим изображением и не могу создать изображение с нуля, используя imagecreatetruru.
Что я пытаюсь
Функция, которую я нашел, которая лучше всего подходит для работы, – imagetrucolortopalette 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
В основном я подозреваю, что imagetrucolortopallette – лучший выбор, но любые идеи приветствуются.