Javascript сжатие изображений без потерь - PullRequest
2 голосов
/ 19 декабря 2010

Я ищу способ кодирования изображения bmp в формате tiff или какого-либо другого стандартного сжатого, но без потерь формата в браузере (javascript). Я предполагаю, что если худшее приходит к худшему, я могу написать библиотеку самостоятельно (получая данные из элемента canvas), но я надеялся либо: есть лучший способ сделать это, либо кто-то другой уже написал что-то подобное (я не могу найти библиотека).

У меня есть пользователи, желающие загрузить ~ 4 МБ (8-битные монохромные) BMP-файлы, которые я могу сжать без потерь до ~ 700 КБ TIFF файлов с помощью LZW (или даже лучше ~ 300 КБ без потерь JPEG-2000). Я хотел бы сделать это до загрузки файлов, чтобы сэкономить время и затраты на перевод.

Прежде чем вы спросите, я не собираюсь анализировать кодирование без потерь, вместо того, чтобы просто использовать JPEG с высоким битрейтом. Это астрономические фотографии, которые используются для анализа, поэтому они не могут справиться с какими-либо артефактами сжатия.

Спасибо, Jonny

Ответы [ 2 ]

2 голосов
/ 19 декабря 2010

Используйте PNG. Это без потерь и использует сжатие zlib. Есть даже такие программы, как pngcrush , которые оптимизируют изображение по размеру (единственная проблема - это займет некоторое время).

Есть ли причина, по которой вы используете JavaScript для всего этого процесса? Не будет ли легче в долгосрочной перспективе, если вы сделаете это в апплете Java (используя библиотеку, которая взаимодействует с классом java.awt.Image) или загрузите его на сервер, который выполнял обработку изображений и вернул сжатое изображение?

Редактировать: Пожалуйста, не используйте Java-апплет; технология больше не поддерживается.

1 голос
/ 21 декабря 2010

Если вы хотите экспериментировать с чем-то новым, вы можете попробовать новый алгоритм сжатия без потерь, который я создал;через Java-апплет можно визуализировать сжатые изображения в браузере.Вы можете использовать Javascript для запуска загрузки апплета или напрямую манипулировать кодом Java (программа с открытым исходным кодом).Для многих изображений степень сжатия будет лучше, чем без потерь в формате Jpeg 2000. Адрес веб-сайта: http://www.researchandtechnology.net/bcif/.

Если вместо этого вы захотите использовать какой-то известный стандарт, то я бысогласен с амфетамином: использование PNG будет лучшим выбором.

Так долго, Стефано

...