flex 获取并发送发送图片

在flex做前台,java做后台语言的web中传送图片。

     flex获取图片,下面的代码仅是有flex可以获得并将图片转码为string存放在message变量中,然后又进过转码将图片取出显示。至于message怎么发送,他就是将字符串怎么由socket发送到后台并存储数据库的事情!

                                  

         import mx.utils.Base64Decoder;
		 import mx.utils.Base64Encoder;
	   	 import mx.core.BitmapAsset;
	   	 import flashx.textLayout.elements.DivElement;
			import flashx.textLayout.elements.FlowElement;
			import flashx.textLayout.elements.ParagraphElement;
			import flashx.textLayout.elements.SpanElement;
			import flashx.textLayout.elements.TextFlow;
			import mx.graphics.codec.JPEGEncoder;
			import flash.net.FileReference;
			
			private var file:FileReference;
          public function imgcontent():ByteArray  //获取图片
			{
				if (file.data.length>0)
				{
					var picture:ByteArray = null;
					var bitmapData:BitmapData = new BitmapData(photo.width, photo.height); 
					bitmapData.draw(photo); 
					picture = new JPEGEncoder(100).encode(bitmapData);
					var textFlow:TextFlow = new TextFlow();
					file=null;
					photo.visible=false;
					textArea.visible=true;
					return picture;
				}
				else
				{
					return null;
				}
			}
			private function browseLocalPicture():void
			{
				file = new FileReference();
				file.addEventListener(Event.SELECT, file_selectHandler);
				file.addEventListener(Event.COMPLETE, file_completeHandler);
				file.browse(new Array(new FileFilter("图像文件 (*.jpg,*.gif,*.png)", "*.jpg; *.gif; *.png")));
			}
			
			private function file_selectHandler(event:Event):void
			{
				file.load();
			}
			
			private function file_completeHandler(event:Event):FileReference
			{
				if (file.data.length>0)
				{
					photo.source=file.data;
					photo.width=photo.sourceWidth;
					photo.height=photo.sourceHeight;
					
					return file;
				}
				else
				{
					//Prompt.show(this,"图片加载错误!","错误提示",Prompt.OK,null,"images/plaint.png");
					return null;
				}
			}
			private function imgsend():void  //发送图片
			{
				var imgst:String;
				var bitMap:Bitmap=new Bitmap();
				var imgbyt:ByteArray=editor.imgcontent();
				var load:Loader=new Loader();
				var mp:ParagraphElement = new ParagraphElement();
				if (imgbyt!=null)
				{
					var div:DivElement = new DivElement(); //创建一个包含姓名和内容的div
					var ns:SpanElement = new SpanElement();
					var img:Image=new Image();
					var Base64:Base64Encoder=new Base64Encoder;//将字符串或 ByteArray 编码为 Base64 编码的字符串。  
					Base64.encodeBytes(imgbyt);     
					imgst=Base64.toString();//输出为字符串  
					load.loadBytes(imgbyt);//读取ByteArray     
					load.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
					function complete(event:Event):void {     
						bitMap=event.target.content as Bitmap;//读取Bitmap    				  
						img.source=new BitmapAsset(bitMap.bitmapData); 	}
					ns.color = 0x008040; //自己名字的颜色
					ns.text = model.employee.username+"  "+df.format(new Date());
					mp.addChild(ns);	
					div.addChild(mp);
					//	div.addChild(img);
					
					contents.textFlow.addChild(div);
					//contents.textFlow.addChild(img);
					
					contents.validateNow();
					contents.scroller.viewport.verticalScrollPosition=contents.scroller.viewport.contentHeight;
					contents.validateNow();
					contents.scroller.viewport.verticalScrollPosition=contents.scroller.viewport.contentHeight;
					
					var mtf:TextFlow = new TextFlow();
					mtf.addChild(mp.deepCopy());
					
					var message:Message = new Message(); //new一条消息
					message.sender = model.employee; //设置发送者为自己
					message.receiver = employee; //设置接收者为对话人员
					message.content = TextFlowUtil.export(mtf).children(); //设置消息内容
					//分发消息发送事件
					CairngormEventDispatcher.getInstance().dispatchEvent(
						new MessageEvent(MessageEvent.SEND_EVENT, message)
					);
					editor.clear();
				}
				else
				{
					Prompt.show(this,"发送消息内容超长,请分条发送!","发送消息",Prompt.OK,null,"images/plaint.png");
				}
				
				editor.setEditorFocus();
			}
			
		
		

猜你喜欢

转载自blog.csdn.net/douzizuibang/article/details/24391511