|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2013
Сообщений: 15
|
Функция getSize пакета flash.sampler. Непонятки с толкованием результатов выполнения.
Добрый вечер!
Есть изображение (Pic01.jpg, 1440x900). Загружаю его Loader`ом и хочу узнать сколько места занимает его bitmapData в памяти. Затем использую метод getVector у BD, чтобы взять информацию с нужного мне кусочка изображения и передаю Vector аргументом в метод setVector у нового объекта BD. Создаю Bitmap, назначаю ему новую BD и добавляю в список отображения. Здесь проблем нет. После этого методом getSize также хочу узнать занимаемое место новым объектом BD. package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.geom.Rectangle; import flash.net.URLRequest; import flash.sampler.getSize; public class MemorySB extends Sprite { public function MemorySB() { super(); stage.scaleMode = "noScale"; stage.align = "topLeft"; stage ? init() : addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, function(e:Event):void { addChild(loader.content); trace("Bitmap:", getSize(loader.content)); // 236 var imgBD:BitmapData = (loader.content as Bitmap).bitmapData; trace("Original Image BD:", getSize(imgBD)); // Output: 48 var newBD:BitmapData = new BitmapData(100, 150, false); newBD.setVector(new Rectangle(0, 0, 100, 150), (loader.content as Bitmap).bitmapData.getVector(new Rectangle(0, 0, 100, 150))); var cropped:Bitmap = new Bitmap(newBD); addChild(cropped); cropped.x = 100; cropped.y = 100; trace("Cropped BD:", getSize(newBD)); // Output: 60048 }); loader.load(new URLRequest("Pic01.jpg")); } } } Отсюда возникает несколько вопросов:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вы сами-то верите, что изображение 1440*900 может весить 48 байт?
3) copyPixels()
__________________
Reality.getBounds(this); |
|
|||||
1) Полагаю что в байтах
2) У меня всё на своих местах, оригинал весит больше (для белого прямоугольника больших размеров): Bitmap: 236 Original Image BD: 2595008 Cropped BD: 60048 3) Лучше использовать copyPixels. Методы setVector и getVector нужны, например, при чтении спецефичного форматa данных картинки, чтобы не вызывать setPixel каждый раз, а заполнить массив и присвоить его BitmapData'е. Или при каких-нибудь манипуляциях с цветом или положением точек.
__________________
if (love is true) break my.heart; |
|
|||||
Регистрация: May 2013
Сообщений: 15
|
Цитата:
И как понимать? Это баг? Могу выложить то самое изображение. Цитата:
Wolsh, Rzer, на счет copyPixels понял, буду юзать. |
|
|||||
Регистрация: May 2013
Сообщений: 15
|
Цитата:
|
Часовой пояс GMT +4, время: 01:51. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|