as 拍照 上传



import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.graphics.codec.PNGEncoder;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
import mx.utils.Base64Encoder;


private var cam:Camera;


protected function encode(byteArray:ByteArray):String{
var base64Encoding:Base64Encoder = new Base64Encoder();
base64Encoding.encodeBytes(byteArray , 0 , byteArray.length);
return base64Encoding.toString();
}

protected function application1_creationCompleteHandler(event:FlexEvent):void 
{
cam = Camera.getCamera("0");

cam.setMode(100 , 100 , 15 , false);

var video:Video = new Video();
video.attachCamera(cam);
video.width = 100;
video.height = 100;

Alert.show("cam.height" + cam.width + "--" + cam.height);

Alert.show("video.heigh" + video.width + "--" + video.height);

var camArray:Array = Camera.names;
trace(camArray);
vd.addChild(video);
}

protected function button1_clickHandler(event:MouseEvent):void
{

Alert.show("" + vd.width + "--" + vd.height);
var bitmapData:BitmapData = new BitmapData(vd.width , vd.height);

// var bitmapData:BitmapData = new BitmapData(50 , 50);


bitmapData.draw(vd);

var png:PNGEncoder = new PNGEncoder();
// mx.graphics.codec.PNGEncoder

// mx.graphics.codec.JPEGEncoder


var byteArray:ByteArray = png.encode(bitmapData);


var f:FileReference  = new FileReference();
f.save(byteArray);

// byteArray.endian = Endian.BIG_ENDIAN;
// byteArray.endian = Endian.LITTLE_ENDIAN;


var service:HTTPService = new HTTPService();
service.method = URLRequestMethod.POST;

service.contentType = "application/octet-stream";
service.headers["accept"] = "*/*";
service.headers["piclength"] = byteArray.length;

service.url = "http://127.0.0.1:8080/upload/upload";

// service.addEventListener( Event.DEACTIVATE , completeHandle4 );
// service.addEventListener( Event.ACTIVATE , completeHandle3 );
// service.addEventListener( InvokeEvent.INVOKE , completeHandle6 );
service.addEventListener( ResultEvent.RESULT ,  completeHandle);
// service.addEventListener( FaultEvent.FAULT , completeHandle5 );

// Alert.show(""+byteArray.length);

service.showBusyCursor = true;

service.send(byteArray);


}

private function completeHandle(e:ResultEvent):void{
trace(e.result)
// Alert.show("上传成功!");
}


package imgservlet;

import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.coobird.thumbnailator.Thumbnails;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import sun.misc.BASE64Encoder;

import facepp.FaceUtil;

@WebServlet("/upload")
public class Upload extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
    public Upload() {
        super();
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

    private byte[] input2byte(InputStream inStream)
    
            throws IOException {
    	
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();  
        byte[] buff = new byte[100];  
        int rc = 0;  
        while ((rc = inStream.read(buff, 0, 100)) > 0) {  
            swapStream.write(buff, 0, rc);  
        }  
        byte[] in2b = swapStream.toByteArray();  
        return in2b;  
    }  
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Long s = System.currentTimeMillis();
		
		InputStream is = request.getInputStream();
		BufferedImage bi = Thumbnails.of(is).scale(0.5).outputQuality(0.3).asBufferedImage();
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		
		ImageIO.write(bi, "png", baos);
		
//		BufferedInputStream bis = new BufferedInputStream(is);
//		Integer piclength = Integer.valueOf(request.getHeader("piclength"));
		
//		byte[] b = new byte[500];
		
//		int rc = 0;
//		ByteArrayOutputStream baos = new ByteArrayOutputStream();
//		while((rc = bis.read(b)) > 0){
//			baos.write(b, 0, rc);
//		}

		byte[] faceData = baos.toByteArray();
		JSONObject rs = FaceUtil.faceDetect(faceData);
		
		System.out.println(rs.toString());
		
		baos.flush();
		baos.close();
		
//        BASE64Encoder encoder = new BASE64Encoder();
//        return encoder.encode(data);//返回Base64编码过的字节数组字符串
		
		try {
			
			JSONArray faceArray = rs.getJSONArray("face");
			String img_id = rs.getString("img_id");
			
//	        
//	        return encoder.encode(data);//返回Base64编码过的字节数组字符串
			
			BASE64Encoder encoder = new BASE64Encoder();
			System.out.println(faceData.length);
			System.out.println(encoder.encode(faceData).getBytes().length);
			
			
			persistenceFace(faceData , img_id);
			
			
		} catch (JSONException e) {
			e.printStackTrace();
		}
		
		System.out.println(System.currentTimeMillis() - s);
	}
	
	
	private void persistenceFace(byte[] data , String img_id){
		
		File f = new File("C:/facePic/" + img_id + ".png");
		try {
			FileOutputStream fos = new FileOutputStream(f);
			fos.write(data);
			fos.flush();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值