Как использовать 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".

Другие вопросы по тегам