Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre Cocuroci

[Resolvido] Erro com JPGEnconder

Recommended Posts

Amigos, estava fazendo uma experiencia.

 

Queria carregar uma imagem e duplica-la utilizando bitmap, bitmapdata e JPGEnconder. Mas na hora de 'redesenhar' a imagem fica dando esse erro: Error #2030: O fim do arquivo foi encontrado.

 

Segue a classe

package  {
	
	import flash.display.MovieClip;
	import flash.display.Loader;
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.net.URLRequest;
	import flash.events.MouseEvent;
	import flash.display.BitmapData;
	import flash.geom.Rectangle;
	import flash.utils.ByteArray;
	import flash.utils.Endian;
	import com.adobe.images.JPGEncoder;
	import com.adobe.images.PNGEncoder;
	import flash.net.FileReference;
	
	public class Main extends MovieClip {		
		
		private var loader:Loader;
		private var bm:Bitmap;
		private var count:uint = 1;
		
		public function Main() {
			this.loaderInfo.addEventListener(Event.COMPLETE, init);
		}
		
		private function init(e:Event):void {
			this.loaderInfo.removeEventListener(Event.COMPLETE, init);
			config();
		}
		
		private function config():void {
			loader = new Loader();
			loader.load(new URLRequest("http://h.imguol.com/1008/27dutra_p.jpg"));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, insere);
		}
		
		private function insere(e:Event):void {
			bm = Bitmap(e.currentTarget.content as Bitmap);
			addChild(bm);
			stage.addEventListener(MouseEvent.CLICK, duplica);
		}
		
		private function duplica(e:MouseEvent):void {
			var bmd:BitmapData = new BitmapData(bm.width, bm.height, true,0);
			var bm2:Bitmap = new Bitmap(bmd);
			
			//var a:ByteArray = bm.bitmapData.getPixels(bm.bitmapData.rect);
			//a.position = 0;
			//bmd.setPixels(bm.bitmapData.rect, a);
			
			var encoded:JPGEncoder = new JPGEncoder(100);		
			var a:ByteArray = encoded.encode(bm.bitmapData);
			a.position = 0;	
			bmd.setPixels(bm.bitmapData.rect, a);			
			
			addChild(bm2);
			
			bm2.x = bm2.width * count;
			count++;
		}
	}
	
}

Porém se eu não utilizar o JPGEncoder e ao invez disso utilizar o getPixels o erro não acontece e a imagem é duplicada, alguem sabe onde posso estar errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você quer apenas duplicar o movieClip, faça dessa forma:

 

 

private function duplica(e:MouseEvent):void {
       var bmd:BitmapData = new BitmapData(bm.width, bm.height, true,0);
       var bm2:Bitmap = new Bitmap(bmd);
       bmd.draw(bm)
       addChild(bm2);
       count++;
}

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Eder, ficou por isso mesmo.

 

Outra coisa legal é pegar o bytearray e usar com um loader.

 

var encoded:JPGEncoder = new JPGEncoder(100);           
var a:ByteArray = encoded.encode(bm.bitmapData);
var loader:Loader = new Loader();
loader.loadBytes(a)
addChild(loader);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.