Flex实现的上传摄像头拍照并将UI保存为图片

这篇文章主要介绍了Flex如何实现上传摄像头拍照并将UI保存为图片,需要的朋友可以参考下

flex客户端代码:
复制代码 代码如下:


xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)">

import mx.controls.Alert;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import mx.graphics.codec.JPEGEncoder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.UIDUtil;

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
initCamera(videoDis);
}

//初始化Camera控件,并添加在VideoDisplay
public function initCamera(videoDis:UIComponent):void
{
var myCamera:Camera = Camera.getCamera();//获取客户端摄像头
myCamera.setMode(500,500,30);

var myVideo:Video = new Video(500,500);
myVideo.attachCamera(myCamera);//获取摄像头的视频流

videoDis.addChild(myVideo);
}

//将可视的UIComponent组件转换为图片
public function UItoBitmap(source:UIComponent,target:UIComponent):void
{
var width :int = source.width;
var height :int = source.height;
var bitmapData:BitmapData =new BitmapData(width,height);
bitmapData.draw(source,new Matrix());

var bitmap:Bitmap=new Bitmap(bitmapData);

var uic:UIComponent = new UIComponent();
uic.addChild(bitmap);
target.addChild(uic);
}


//将可视的UIComponent组件保存为本地图片
public function UISaveAsImg(imgID:UIComponent):void
{
var width :int = imgID.width;
var height :int = imgID.height;
var bitmapData:BitmapData =new BitmapData(width,height);
bitmapData.draw(imgID);

var byteArr:ByteArray = bitmapData.getPixels(new Rectangle(0,0,width,height));
var byteArr123:ByteArray =new JPEGEncoder().encodeByteArray(byteArr,width,height);

var fileRefer:FileReference = new FileReference();
fileRefer.save(byteArr123,UIDUtil.createUID()+".png-600");
fileRefer.addEventListener(Event.COMPLETE,function completeHandler():void{
Alert.show("保存本地成功");
});
}


//照片上传到服务器
protected function upLoadImg(imgID:UIComponent):void
{
var width :int = imgID.width;
var height :int = imgID.height;
var bitmapData:BitmapData =new BitmapData(width,height);
bitmapData.draw(imgID);

var byteArr:ByteArray = bitmapData.getPixels(new Rectangle(0,0,width,height));
var byteArr123:ByteArray =new JPEGEncoder().encodeByteArray(byteArr,width,height);

webService.UploadFile(byteArr123,"123.png-600");
}


protected function webService_faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.toString());
}
protected function webService_successHandler(event:ResultEvent):void
{
Alert.show(event.result.toString());
}

]]>

















webservice代码:
复制代码 代码如下:

///
/// 上传文件到远程服务器
///

/// 文件流
/// 文件名
/// 字符串
[WebMethod(Description = "上传文件到远程服务器.")]
public string UploadFile(byte[] fileBytes, string fileName)
{
try
{
MemoryStream memoryStream = new MemoryStream(fileBytes); //1.定义并实例化一个内存流,以存放提交上来的字节数组。
FileStream fileUpload = new FileStream(Server.MapPath(".") + "\\" + fileName, FileMode.Create); ///2.定义实际文件对象,保存上载的文件。
memoryStream.WriteTo(fileUpload); ///3.把内存流里的数据写入物理文件
memoryStream.Close();
fileUpload.Close();
fileUpload = null;
memoryStream = null;
return "文件已成功上传至服务器";
}
catch (Exception ex)
{
return ex.Message;
}
}

以上就是Flex实现的上传摄像头拍照并将UI保存为图片的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Flex