2012-07-03 2 views
0

Мое приложение требует, чтобы файлы QR-файла с очень маленьким размером (менее 2,5 КБ) сохранялись как ДАННЫЕ (НЕ МОЖЕТ БЫТЬ СВЯЗЕЙ) в QR-коде. И качество, и размер являются проблемой. Любой байт, который я могу сохранить, может означать, что я могу сделать QR-код более удобным для чтения. К счастью, все они имеют стандартное разрешение (160x240) и глубину цвета (24 бит).Дальнейшее сжатие Jpeg для известного разрешения? Возможно сохранение заголовка?

У меня возникла идея взять часть заголовка из самих файлов JPEG и добавить приложение обратно в массив данных позже, что позволило бы сохранить хорошие 600 байт (ничего себе). До сих пор я делаю сжатие, чтобы сохранить «золотой стандартный файл» и сжать этот файл с Q = 80-10%, пока он не встанет на 2.5 КБ.

Поскольку другой коэффициент сжатия означает другой заголовок, моя идея состояла бы в том, чтобы передать окончательное сжатое изображение через проход ANOTHER известного стандартного сжатия. Но тогда, если «стандартное сжатие» больше, чем исходное сжатие, изображение уже засело, размер может быть БОЛЬШЕ, чем окончательное сжатое изображение.

Есть ли стандартный способ делать что-то подобное? Я чувствую, что могу быть на что-то, но я не могу заставить его работать.

+0

Я читал это три раза, и единственное, что я могу придумать, это то, что это ужасная идея. Какова конечная цель иметь данные JPEG в QR-коде? При таком сжатии не только изображение будет непригодным, но и то, что объем данных в QR-код сделает его невозможным для сканирования более качественными телефонными камерами. QR-коды не предназначены для того, что вы пытаетесь сделать. – kcoppock

+0

Идея состоит в том, что она просто должна быть узнаваемой для изображения высокого качества. Качество должно быть предметом озабоченности. – yhyrcanus

+0

Хм, хорошо. Ну, я просто попробовал «Сохранить для Интернета» на изображении 240x160 в Photoshop (который убирает лишние данные), установите его на 0 качество и максимальное размытие для потери, и до сих пор не смог получить его ниже 2.5K. И это выглядело ужасно. Честно говоря, я не думаю, что смогу дать вам удовлетворительную идею, чтобы продолжить ваши требования. Если бы вы могли дать немного больше информации о том, как ваше приложение будет функционировать, я был бы рад предложить альтернативу. – kcoppock

ответ

0

То, что я в итоге закончил, было с несколькими уровнями сжатия, и я сохранил заголовок (D0-DB) и таблицу Хаффмана (C4). Я могу сохранить примерно 550 байтов таким образом с помощью простого алгоритма замены. Он не идеален на 100%, но это не так уж и плохо. Я теряю около 50 байт, но компромисс с увеличенным качеством и размером памяти программных приложений делает его достойным.

Чтобы упростить сканирование, я уменьшил максимальный размер до 1,9 КБ до алгоритма замены.

Смежные вопросы