![]() |
|
||||||||||
|
|||||
|
Записываю BitmapData
И тут же считываю Почему байт массив изменился?
__________________
Пора бы мне уже умнеть.. |
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: Dec 2005
Сообщений: 556
|
пытаясь воспроизвести вышеописанную ситуацию, получил ещё эффект:
var c = new ByteArray(); c.length = 8; c.writeByte (6); c.writeByte (148); c.writeByte (59); c.writeByte (175); trace(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]); imgbit.setPixels(rect,c); c.writeByte (1); c.writeByte (2); c.writeByte (3); c.writeByte (4); trace(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]); Цитата:
Последний раз редактировалось aQuestion; 03.01.2008 в 17:28. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Потому что напрямую так с массивом не работают.
Ничего никуда не изменяется: import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.utils.ByteArray;
var bmp:BitmapData = new BitmapData(2,2,true,0);
var ba:ByteArray = new ByteArray();
ba.writeUnsignedInt(0xFFFFFFFF);
ba.writeUnsignedInt(0xFFFF0000);
ba.writeUnsignedInt(0xFF00FF00);
ba.writeUnsignedInt(0xFF0000FF);
ba.position = 0;
bmp.setPixels(bmp.rect, ba); // write
ba = bmp.getPixels(bmp.rect); // read
ba.position = 0;
while(ba.bytesAvailable) {
trace('pixel color:','0x'+ba.readUnsignedInt().toString(16).toUpperCase());
}
addChild(new Bitmap(bmp));
|
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: Dec 2005
Сообщений: 556
|
етц, а если писать ba.writeUnsignedInt(0x01345678); ?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я думаю, некий смысл вытекает из этого:
Цитата:
|
|
|||||
|
premultiplied и unmultiplied это что за пиксели?
aQuestion А выход-то какой, не злоупотреблять альфой?
__________________
Пора бы мне уже умнеть.. Последний раз редактировалось Ноябрь; 03.01.2008 в 19:15. |
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: Dec 2005
Сообщений: 556
|
премультиплайед = предварительно умноженный (на альфу от 0 до 1)
анмультиплайед = не умноженный (или же разумноженный обратно) в силу целочисленности конверсия из премультиплайед в анмультиплайед, очевидно, идёт с потерями. выход - смотря из какой ситуации. в том топике, например, я пытался использвать альфу для хранения ч/б картинки, и мой выход, т.о., свёлся к использованию отдельного файла. |
|
|||||
|
т.е избежал ситуации, когда необходимо получить данные из BitmapData?
__________________
Пора бы мне уже умнеть.. |
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: Dec 2005
Сообщений: 556
|
не, у меня просто была цветная картинка (карта) и ч/б (маска воды). я подумал что неплохо бы сэкономить, и запихнуть всё в один пнг. оказалось, что плохо.
подумай, никак ли нельзя тебе хранить альфу отдельно от остальных каналов. |
|
|||||
|
хз.. как из пнг можно выделить альфа канал?
а я кодирую байт массив, просто хотел эмитировать загрузку данных (каждый раз получать массив из битмапа). сейчас у меня массив из битмапа загружается только один раз, после этого уже битмап строится на основе байт массива..
__________________
Пора бы мне уже умнеть.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:46. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|