Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.01.2011, 03:23
VitaliyKrivtsov вне форума Посмотреть профиль Отправить личное сообщение для VitaliyKrivtsov Посетить домашнюю страницу VitaliyKrivtsov Найти все сообщения от VitaliyKrivtsov
  № 1  
Ответить с цитированием
VitaliyKrivtsov
 
Аватар для VitaliyKrivtsov

блогер
Регистрация: Apr 2010
Сообщений: 99
Записей в блоге: 5
Отправить сообщение для VitaliyKrivtsov с помощью ICQ Отправить сообщение для VitaliyKrivtsov с помощью Skype™
Question decode BMP - как вытащить из массива 32 битный цвет

Здравствуйте! У меня назрел вопрос по поводу распаковывания массива байт файла BMP в BitmapData.
Почитал инфу о формате, в википедии хорошо расписана структура файла. Если я правильно понял BMP несжатые в которых глубина 32 бита - синий, зеленый, красный, альфа - занимают 4 байта. А вот собственно вопрос, как оптимально используя ресурсы, с читать данные отдельно для каждого канала, что бы перенести потом в BitmapData при помощи setPixel( ) ?


Последний раз редактировалось VitaliyKrivtsov; 09.01.2011 в 03:26.
Старый 09.01.2011, 03:50
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А зачем Вам отдельные каналы? Читайте 32 битный уинт ( ByteArray#readUnsignedInt() ) и пишите его в битмапдату.
Если честно, ни разу не встречал .bmp с 32 битами без сжатия. Разве что в иконках.
__________________
Reality.getBounds(this);

Старый 09.01.2011, 03:50
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 3  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Эм, непонятно, а чем Loader.load() не подходит? Он вам загрузит картинку, потом вы возьмете оттуда битмапдату и попиксельно ее распотрошите. r: color >> 16 & 0xFF, g: color >> 8 & 0xFF, b: color & 0xFF.
__________________
#flasher@irc.trg.ru:6667


Последний раз редактировалось Obi; 09.01.2011 в 03:55.
Старый 09.01.2011, 04:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Obi, Loader не понимает BMP. И товарищу не надо никого потрошить, ему надо BitmapData.
__________________
Reality.getBounds(this);

Старый 09.01.2011, 14:45
TERRORist вне форума Посмотреть профиль Отправить личное сообщение для TERRORist Найти все сообщения от TERRORist
  № 5  
Ответить с цитированием
TERRORist
 
Аватар для TERRORist

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
будет очень медленно работать, если попиксельно и большие картинки. Если есть возможность, юзайте PNG с альфа каналом. Каналы после отрисовки ега в битмапдату разделяются методом CopyChannel

Старый 09.01.2011, 18:44
VitaliyKrivtsov вне форума Посмотреть профиль Отправить личное сообщение для VitaliyKrivtsov Посетить домашнюю страницу VitaliyKrivtsov Найти все сообщения от VitaliyKrivtsov
  № 6  
Ответить с цитированием
VitaliyKrivtsov
 
Аватар для VitaliyKrivtsov

блогер
Регистрация: Apr 2010
Сообщений: 99
Записей в блоге: 5
Отправить сообщение для VitaliyKrivtsov с помощью ICQ Отправить сообщение для VitaliyKrivtsov с помощью Skype™
Wolsh, такие .bmp с 32 битами на пиксель есть, они не сжимаются по умолчанию, так было разработчиками этого формата задумано, сжимаются те .bmp которые ниже 24 бит на пиксель.
TERRORist, мне нужно BitmapData то есть само изображение, я имел ввиду, что разобрать по каналу - значить выделить каждый канал из массива байт (красный, зеленый, синий ) и впихнуть в BitmapData, не на оборот.

Старый 09.01.2011, 19:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
сжимаются те .bmp которые ниже 24 бит на пиксель.
Ниже 24 бит - это 8 бит, то есть 256 цветов, индексированное изображение. Никто его не сжимает, нет смысла. Смысл сжимать есть как раз для 32 бит, так как вес уже ощутимый.
Я разбирал bmp, когда делал "читалку" файла ICO. Там действительно не сжимается 32 бита для маленьких размеров. Но, например, "vista icon" содержит бмп-файл с PNG сжатием (в спецификации BMP возможен также и JPG, но в иконках он бессмысленен). Спецификация также предусматривает изображение с 16 бит на пиксель - я не смог найти или создать в редакторах ни одного примера такого изображения, они может и были в эпоху виндос 3, а может и в миллениуме)) Вобщем мой класс читает все, но только не 16 бит. Если хотите - поделюсь (впрочем бмп-читалки можно найти в разных библиотеках). Что касается 32-бит бмп, то там действительно все просто, блок имеджДата и есть битмапдата (единственно он может быть зеркально перевернут по вертикали), 32-битный паддинг строк развертки делать не надо, данные итак 32 бита, то есть просто читаем их подряд и задаем битмапдате setPixel32() в двойном цикле ширина/высота.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 09.01.2011 в 19:57.
Старый 09.01.2011, 20:54
VitaliyKrivtsov вне форума Посмотреть профиль Отправить личное сообщение для VitaliyKrivtsov Посетить домашнюю страницу VitaliyKrivtsov Найти все сообщения от VitaliyKrivtsov
  № 8  
Ответить с цитированием
VitaliyKrivtsov
 
Аватар для VitaliyKrivtsov

блогер
Регистрация: Apr 2010
Сообщений: 99
Записей в блоге: 5
Отправить сообщение для VitaliyKrivtsov с помощью ICQ Отправить сообщение для VitaliyKrivtsov с помощью Skype™
Поюзал гугл , нашол класс который разбирает все возможные .bmp, но нет класса который запихивал бы в массив байт, что б потом, например, сохранить изображение у себя на компу, не найду и хорошей документации, Wolsh может посоветуешь ту документацию по которой сам разбирал bmp.

Старый 09.01.2011, 21:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
http://pascal.sources.ru/articles/099.htm
MSDN:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
AS3 BMPDecoder :
http://ntt.cc/2008/10/01/using-bmpde...n-support.html

Цитата:
нет класса который запихивал бы в массив байт
- в смысле создавал файл BMP из имеющейся битмапдаты, то есть BMP Encoder?
__________________
Reality.getBounds(this);

Старый 09.01.2011, 21:23
VitaliyKrivtsov вне форума Посмотреть профиль Отправить личное сообщение для VitaliyKrivtsov Посетить домашнюю страницу VitaliyKrivtsov Найти все сообщения от VitaliyKrivtsov
  № 10  
Ответить с цитированием
VitaliyKrivtsov
 
Аватар для VitaliyKrivtsov

блогер
Регистрация: Apr 2010
Сообщений: 99
Записей в блоге: 5
Отправить сообщение для VitaliyKrivtsov с помощью ICQ Отправить сообщение для VitaliyKrivtsov с помощью Skype™
да, такой себе класс BMPEncoder, конечно его сложнее будет написать чем класс Decoder который только разбирает.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.