2014-10-03 4 views
-1

Я прочитал, что для чтения сжатого изображения в память он должен быть сначала распакован, а исходный размер будет выделен. Итак, поскольку он распакован и размер до сжатия выделен в памяти, почему разрешение сжатого изображения при просмотре с определенным программным обеспечением не совпадает с исходным?Почему качество декомпрессии не поддерживается?

+3

«Почему разрешение сжимаемого изображения при просмотре с определенным программным обеспечением не совпадает с оригинальным?» ... где вы наблюдали это поведение? Кроме того, этот вопрос не имеет отношения к разработке игр. – bummzack

ответ

2

Технически de сжатие сжатого изображения поддерживает качество сжатого изображения. Однако сжимающий изображение может снизить качество (т. Е. Сжатое изображение немного ухудшилось от исходного изображения).

Конкретные изменения изображения зависят от того, какое сжатие вы применяете; что я не знаком с каким-либо сжатием, которое изменит разрешение или размер изображения. Вы уверены, что получили это право?

+0

«... Я не знаком с каким-либо сжатием, которое изменило бы разрешение или размер изображения». Итак, почему используется сжатие? –

+0

Чтобы уменьшить размер файла. Сжатый размер файла, а не размер изображения. – jhocking

6

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

Вы можете увидеть изображение в виде массива из 4-байтовых структур, по одному для каждого пикселя, где каждый байт представляет собой один из компонентов цвета каждого пикселя, а именно красный, зеленый, синий и альфа. Размер, необходимый для представления изображения с этой схемой является

width * height * 4 

Так 100x100 пикселей изображения будет иметь 10000 пикселей, и, следовательно, потребляют 40000 байт. На самом деле это примерно так, как формат BMP хранит изображения.

Однако, это не единственный способ представить эти 10000 пикселей. Если, например, первые 5000 пикселей являются синими, а нижние пиксели - коричневыми, вы можете представить изображение, произнеся что-то вроде «blue: 5000, brown 5000», и для этого потребуется гораздо меньше байтов. Эта схема примерно соответствует тому, как работает RLE (Run Length Encoding), и широко используется во многих форматах, таких как GIF.

Однако для уменьшения количества байтов, необходимых для представления байтов на вашем изображении, вы можете только так много сделать. Данные не всегда легко представлять с меньшим количеством байтов, поэтому некоторые алгоритмы сжатия, такие как файлы, используемые в файлах JPEG, - это немного изменить пиксели, поэтому данные намного проще сжимать, но изменения не являются очень заметно. Если такие изменения приемлемы, при сжатии изображения можно добиться впечатляющих результатов. Это то, что называется «сжатием с потерями».

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

+0

Также обратите внимание, что сжатие с потерями является единственным способом принудительной передачи заданной степени сжатия (например, «Сделайте снимок меньше 100 килобайт любой ценой»). – Medinoc