Нарисуйте изображение из массивов данных пикселей

Если у меня есть массив данных пикселей в JavaScript, есть ли хороший способ отобразить его на странице HTML?

  • На последних версиях Safari и Firefox я могу сделать <canvas> элемент и использование putImageData для отображения пикселей, но в идеале решение может работать и на более старых версиях, и, что более важно, работать на Internet Explorer.
  • Другое решение, которое кажется более осязаемым, может заключаться в кодировании пикселей в стандартный формат изображения и создании data: URI с пикселями и установите его как src из <img> элемент. К сожалению, кажется, что большинство форматов изображений являются сложными, и мне трудно найти простой, который может выполнить эту работу (BMP выглядит как возможность, но не работает в Safari). Кроме того, версии Internet Explorer до IE 8 не поддерживают data: URI вообще.

Я сомневаюсь, что они существуют, но кто-нибудь знает библиотеки изображений для JavaScript, которые могут генерировать изображения в стандартном формате? Есть ли способ повторить функциональность data: URI в IE 7?

4 ответа

Решение

Работает ли формат PNG для ваших целей? Если так, то PNGlib выглядит довольно хорошо.

Кроме того, JS JPEG Encoder выглядит хорошо, но он принимает в качестве входных данных возвращаемое значение Canvas.getImageData().

Не знаю, что вы можете сделать, чтобы поддержать IE 7, хотя.

Canvas - это хорошее решение, для поддержки кроссбраузерности см. Превосходное руководство Марка Пилигрима:

http://diveintohtml5.ep.io/canvas.html частности, "А как насчет IE?" раздел и использование explorercanvas. Вы можете использовать и создавать данные: URI в форматах png и jpeg с помощью canvas.

Проверь себя Рафаэль - http://raphaeljs.com/

Хотя это может быть медленным и не предназначено для использования библиотеки, она будет работать с поддержкой интересующих вас браузеров.

Может быть, проверить fxCanvas http://burzak.com/pro/fxcanvas/

Я думаю, что они реализуют даже 'putImageData' в IE, используя Flash.

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