Как преобразовать PNG в GIF с помощью javascript или другой технологии на стороне клиента?

У меня есть комбинация клиентских технологий, создающих данные PNG в браузере. Есть ли способ преобразовать данные PNG в GIF для отображения в IE без отправки данных на сервер? Интересно, существует ли существующая библиотека JavaScript, которая будет анализировать данные PNG и выводить GIF или даже JPEG. Я знаю, что могу отправить данные PNG на сервер, а PHP/Python/или что-то еще сгенерировать файл для отображения в IE, но я стремлюсь сохранить все это на стороне клиента, даже если обработка изображения несколько медленный.

ОБНОВЛЕНИЕ: для этого нет очевидных существующих библиотек JavaScript, поэтому я буду использовать Flash для преобразования данных изображения в вывод GIF для IE и продолжать использовать PNG для всех других браузеров.


person Community    schedule 12.08.2009    source источник
comment
Как создать PNG в браузере? Возможно, эта библиотека также предлагает вывод в формате JPEG? И если вы можете создать PNG локально в IE, почему IE не может отобразить его должным образом? И что не так с PNG в первую очередь?   -  person Thilo    schedule 12.08.2009
comment
Я как бы хочу взглянуть на этот скрипт создания образа на стороне клиента, но боюсь.   -  person deceze♦    schedule 12.08.2009


Ответы (3)


Является ли это возможным? Я предполагаю. JavaScript является полным по Тьюрингу, и я полагаю, что можно обойти ограничения браузера, выводя формат типа <img src="data: ..." />.

Возможно ли это или хорошая идея? Конечно нет. Делать это было бы все равно, что нуждаться в бетоне и разрабатывать лунную ракету для сбора лунной пыли вместо того, чтобы покупать ее в Home Depot.

person ceejayoz    schedule 12.08.2009
comment
Я не уверен, что это возможно, но почему это плохая идея? Кажется, это чисто проблема пользовательского интерфейса/дисплея, и если ее можно решить в браузере, я думаю, это очень хорошая идея. Это та же идея, что и создание диаграмм в браузере с помощью JavaScript, а не создание файлов изображений на стороне сервера. - person Thilo; 12.08.2009
comment
Это плохая идея, потому что вы можете сделать это один раз на стороне сервера, а не на стороне клиента каждого отдельного сеанса. Это плохая идея, потому что серверные библиотеки, такие как ImageMagick и GD, будут намного быстрее делать это, чем язык, такой как JavaScript, который просто не настроен для выполнения тяжелых вычислений, необходимых для обработки изображений. Это плохая идея, потому что просто не существует решения на стороне клиента, о котором я знаю, в то время как есть много решений на стороне сервера. - person ceejayoz; 12.08.2009
comment
Что касается создания диаграмм в браузере с помощью JavaScript, JavaScript не выполняет никаких манипуляций с изображениями. Это либо манипулирование HTML, либо отправка инструкций во Flash или какая-то подобная технология, которая делает тяжелую работу с изображением. - person ceejayoz; 12.08.2009
comment
Ну, у него уже есть решение для создания файлов PNG в браузере. Кажется, это не большой шаг вперед. - person Thilo; 12.08.2009
comment
Тяжелую работу по преобразованию PNG в GIF также можно выполнить, отправив инструкции во Flash или другую подобную технологию, как и в случае с диаграммами. - person Thilo; 12.08.2009
comment
Быть в состоянии сделать это и быть хорошей идеей — совершенно разные вещи. Создание PNG на лету с помощью JavaScript неизбежно будет медленным процессом с высокой нагрузкой на ЦП. - person ceejayoz; 12.08.2009
comment
Быть способным сделать это и быть хорошей идеей — разные вопросы. У меня есть сомнения, что это возможно (но он уже создает PNG в браузере, так что, возможно, это так), но если это возможно, это было бы очень хорошей идеей. Кажется, что это намного меньше загружает процессор, чем, например, воспроизведение видео на YouTube. И распределение работы ЦП на клиентах, а не сосредоточение ее на сервере, также является разумным подходом к масштабируемости. Я действительно не понимаю, как это концептуально отличается от диаграмм JS. - person Thilo; 12.08.2009
comment
Это плохая идея, потому что вы можете сделать это один раз на стороне сервера, а не на стороне клиента каждого отдельного сеанса. Как вы могли бы сделать это один раз на стороне сервера, если входной PNG генерируется на клиенте и, по-видимому, каждый раз разный. Вам придется делать это для каждого отдельного сеанса (или запроса) на стороне сервера. - person Thilo; 12.08.2009
comment
Данные PNG создаются на стороне клиента; окончательный вывод из Flash. Проблема выполнения этого один раз на стороне сервера вместо каждого отдельного сеанса на стороне клиента здесь не актуальна, потому что каждый клиент получает совершенно другое изображение, поэтому с этой точки зрения нет никакого преимущества в вызове сервера. Я хотел бы придерживаться PNG для всех браузеров, которые его поддерживают, поскольку изображения лучше всего выглядят в формате PNG и использовать GIF только при необходимости. Если для этого нет библиотеки JavaScript, я мог бы использовать другой файл Flash для преобразования из PNG в GIF, но я не думаю, что Flash имеет встроенную поддержку вывода GIF. - person ; 12.08.2009

Хм. Похоже, за последние пару лет появилось несколько вариантов:

person Danny Kirchmeier    schedule 11.07.2012

Кажется, у вас есть объект Flash, который выводит PNG. Можете ли вы добавить к нему параметр вывода JPEG или GIF?

В качестве альтернативы, похоже, существует библиотека JavaScript, которая включает поддержку PNG в IE< /а>. Однако не уверен, насколько хорошо это работает.

person Thilo    schedule 12.08.2009