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();
}
}
}