2015-02-11 3 views
-1

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

Я задаю здесь вопрос о придурке. Это для меня ясно, что это невозможно, чтобы показать кодированное изображение так же, как это, но я хочу знать, почему, и как изображение отображаются на экране, потому что это легко просто сделать:

canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null); 

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

Легко понять, как это сделать, это немного сложнее понять, почему.

Если кто-то есть курс/Tuto/статьи/объяснение, что объясняет его ... Я был бы признателен

Заранее спасибо

PS: Пожалуйста, не отвечайте «Вы должны декодировать/конвертировать PNG растровое изображение «Я знаю это ... И это не мой вопрос

ответ

1

Существует множество причин. На самом деле нет прямой зависимости между «значением в файле» и «пикселем на экране».

  1. Вам необходимо знать ширину и высоту растрового изображения. Вы не можете вывести это из размера изображения - его нужно хранить где-то внутри файла изображения. (Или где-нибудь еще. Point is, вы должны знать его размер.)
  2. Вам нужно знать глубину и цветовую схему битмапа. Вы не можете достоверно копировать 8-битное индексированное изображение непосредственно на экран, который принимает, например, 32-битное упорядочение BGR с неиспользуемым байтом.
  3. Ваш пример, PNG file format, указывает, что все данные изображения сжимаются. Это по разумной причине: формат PNG был разработан для использования на веб-страницах в течение периода времени, когда каждый байт все еще учитывался. Но даже в простом формате BMP-файла используется очень конкретная форма «кодирования»: в его 24-битном формате каждая строка состоит из наборов значений BGR для каждого пикселя и дополняется в конце с достаточным количеством байтов, чтобы сделать общая длина равномерно делится на 4.
  4. JPEG использует еще более совершенную схему кодирования (что слишком сложно объяснить несколькими короткими словами), чтобы еще больше сжимать изображения. Расширенная схема кодирования позволяет гораздо больше сжатия, чем обычные методы (что, в свою очередь, означает, что существует только мельчайшая связь между «значениями в файле» и «пикселями на экране»).
+0

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

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