Я не уверен, что вы сможете этого добиться, поскольку объем информации, который может содержать QR-код, весьма ограничен.
Прежде всего, вы, вероятно, захотите сохранить свое изображение в виде необработанных байтов, поскольку другие форматы (числовой и буквенно-цифровой) предназначены для хранения текста/чисел и обеспечат меньше места для хранения вашего изображения. Предположим, вы выбрали максимально возможный QR-код (версия 40) с наименьшим уровнем исправления ошибок, который может содержать до 2953 байт двоичной информации (см. здесь).
Первый вариант, как вы предлагаете, вы сохраняете изображение в виде растрового изображения. Этот формат вообще не допускает сжатия и требует (в случае изображения RGB без альфа-канала) 3 байта на пиксель. Если мы примем во внимание размер заголовка файла (от 14 до 54 байт) и проигнорируем заполнение (каждая строка данных изображения должна быть дополнена до длины, кратной 4), это позволит вам хранить примерно 2900/3 = 966 пикселей. Если рассматривать квадратное изображение, то оно представляет собой растровое изображение размером 31x31, что мало даже для миниатюрного изображения (например, мой аватар в конце этого поста имеет размер 32x32 пикселя).
Второй вариант: вы используете JPEG для кодирования изображения. Этот формат имеет преимущество использования алгоритма сжатия, который может уменьшить размер файла. На этот раз нет точной формулы для получения размера изображения, умещающегося в 2,9 КБ, но я попытался использовать несколько квадратных изображений и уменьшить их размер, пока они не будут соответствовать этому размеру, сохраняя хороший коэффициент качества (93): это дает среднее значение. изображений размером примерно 60x60 пикселей. (На таких маленьких изображениях обычно не наблюдается невероятного коэффициента сжатия между jpeg и bmp, поскольку заголовок файла в файле jpeg намного больше, чем в файле bmp: около 500 байт). Это лучше, чем растровое изображение, но остается довольно маленьким.
Наконец, даже если вам удастся закодировать свое изображение в этом QR-коде, вы столкнетесь с другой проблемой: такой большой QR-код очень и очень сложно успешно отсканировать. Фактически, этот QR-код будет иметь размер 177x177 модулей («модуль» — это маленький белый или черный квадрат). Если вы отсканируете его с помощью смартфона, обеспечивающего так называемые кадры «HD» (1280x720 пикселей), каждый модуль будет иметь максимальный размер кадра около 4 пикселей. Если принять во внимание шум камеры, алиасинг и размытие из-за того, что пользователь никогда не бездействует при сканировании, качество входных кадров очень затруднит успешное получение QR любым алгоритмом декодирования QR-кода. Код (не забудьте, что в начале мы установили низкий уровень исправления ошибок!).
Несмотря на то, что это не очень хорошие новости, я надеюсь, что это поможет вам!
person
mbrenon
schedule
17.10.2012