Как использовать toDataURL, чтобы установить как PNG8?
Довольно простой вопрос, но я нигде не могу найти документацию. Как мне сказать canvas.toDataURL() сохранить файл в формате PNG-8?
thumbnail = canvas.toDataURL();
Я знаю, что могу передать "image/jpeg", чтобы получить jpeg, но как насчет PNG-8?
1 ответ
На сегодняшний день не существует единого встроенного метода для создания PNG с индексированием палитры в любом из основных браузеров. Браузеры должны поддерживать только базовую PNG 24-битную битовую карту и альфа.
Хотя они могут свободно поддерживать любой дополнительный формат, который они пожелают, но маловероятно, что они слишком сильно отойдут от того, что является кросс-браузерно-совместимым (существуют некоторые исключения, но они мало используются, такие как TIFF в Safari, ICO в Firefox).
Чтобы сегодня это работало, вам нужно извлечь пиксели, квантовать цвета в палитру, затем скомпилировать файл, отформатировать растровое изображение, кодировать его и сжать, а затем сохранить его. Это выполнимо, но это проект сам по себе.
При желании посмотрите на сервисы, такие как TinyPNG [я не связан]. Они предоставляют API, который может использоваться для программной отправки ваших обычных PNG, и имеют возвращенные свернутые PNG, обычно означающие "PNG8".