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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.11.2011, 17:09
denisko вне форума Посмотреть профиль Отправить личное сообщение для denisko Найти все сообщения от denisko
  № 1  
Ответить с цитированием
denisko

Регистрация: Jun 2011
Сообщений: 24
По умолчанию Как скопировать пиксели в ByteArray

Всем привет!)

Допустим я загрузил фотографию потом копирую пиксели в ByteArray
А потом хочу отобразить ее в другом месте, но не получается.
Код AS3:
var img:Loader = new Loader;
img.load(new URLRequest('http://чето_там.ру/шьпюозп'));
img.contentLoaderInfo.addEventListener(Event.INIT, function(e:Event):void {
img.x = 10;
img.y = 10;
addChild(img); 
_i(img.width, img.height);
});
 
function _i(w:int, h:int):void {
var rect:Rectangle = new Rectangle(10, 10, w, h);
var bmd:BitmapData;
var pixels:ByteArray = new ByteArray();
pixels = bmd.getPixels(rect);
var l:Loader = new Loader;
l.loadBytes(pixels);
l.contentLoaderInfo.addEventListener(Event.INIT, function(e:Event):void {
l.x = 900;
l.y = 100;
addChild(l); // В итоги никакого изображения нет
});
}

Старый 22.11.2011, 17:20
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 2  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
перестаньте использовать односимвольные переменные, вложенные функции, расставляйте табуляцию. Это для начала.

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

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

Добавлено через 2 часа 10 минут
Блин ступил, если вам не надо это дело ресайзить и поворачивать, то сделайте copyPixels, быстрее будет
__________________
:)

Старый 22.11.2011, 19:46
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>> нужно создать новый экземпляр BitmapData и отрисовать в него..
это если нужно, что далеко не всегда
можно тот же BitmapData использовать для создания сколько угодно копий
если нужен именно ByteArray, то взять его можно в bytes лоадера
Код AS3:
public function Main():void
{
	var img:Loader = new Loader;
	img.load(new URLRequest('face26.jpg'));
	img.contentLoaderInfo.addEventListener(Event.COMPLETE, img_complete);
	addChild(img);
}
 
private function img_complete(e:Event):void 
{
	var li:LoaderInfo = LoaderInfo(e.target);
	//через ByteArray
	var ba:ByteArray = li.bytes;
	var imgCopy1:Loader = new Loader();
	imgCopy1.loadBytes(ba);
	addChild(imgCopy1).x = 150;
	// через BitmapData
	var bmd:BitmapData = Bitmap(li.content).bitmapData;
	var imgCopy2:Bitmap = new Bitmap(bmd);
	addChild(imgCopy2).x = 300;
 
}

Старый 22.11.2011, 22:55
denisko вне форума Посмотреть профиль Отправить личное сообщение для denisko Найти все сообщения от denisko
  № 4  
Ответить с цитированием
denisko

Регистрация: Jun 2011
Сообщений: 24
Aquahawk, можно пример?

Старый 23.11.2011, 00:36
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 5  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.geom.Matrix;
	import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author aquahawk
	 */
	public class Main extends Sprite 
	{
		private var loader:Loader;
		private var partBitmapData:BitmapData;
		private var partBitmap:Bitmap;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(evt:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
 
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
 
			var urlRequest:URLRequest = new URLRequest("fox.jpg");
			loader.load(urlRequest);
		}
 
		private function onIoError(evt:IOErrorEvent):void 
		{
			trace("Can`t load");
		}
 
		private function onComplete(evt:Event):void 
		{
			addChild(loader);
 
			partBitmapData = new BitmapData(200, 200);
 
			var translationMatrix:Matrix = new Matrix();
			translationMatrix.translate( -100, -100);
 
			partBitmapData.draw(loader, translationMatrix);
 
			partBitmap = new Bitmap(partBitmapData);
 
			partBitmap.x = 410;
			partBitmap.y = 100;
 
			addChild(partBitmap);
		}
	}
}
Весь проект на FD приложен. Если работаете во FlashIde то назначьте в качестве DocumentClass класс Main.
Вложения
Тип файла: zip bitmapTest.zip (58.2 Кб, 40 просмотров)
__________________
:)

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

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

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


 


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


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