前段时间做了一个类似的应用,现将源代码公布。(请自行配置php和gd2库)
Flash as3:(放到帧上,可自行修改移至相关class)
- function clickHandler(e:MouseEvent):void
- {
- var bitmapdata:BitmapData = new BitmapData(video.width, video.height);
- bitmapdata.draw(video);
- var jpgEncoder:JPGEncoder = new JPGEncoder(80);//图片质量
- var jpgStream:ByteArray = jpgEncoder.encode(bitmapdata);
- var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
- var jpgURLRequest:URLRequest = new URLRequest ("http://localhost/jpg_encoder_download.php?name=camera.jpg"); //此web url请自行修改
- jpgURLRequest.requestHeaders.push(header);
- jpgURLRequest.method = URLRequestMethod.POST;
- jpgURLRequest.data = jpgStream;
- navigateToURL(jpgURLRequest, "_blank");
- }
- var video:Video = new Video;
- addChild(video);
- video.attachCamera(Camera.getCamera());
- var btn:Sprite = new Sprite;
- btn.graphics.beginFill(0,1);
- btn.graphics.drawRoundRect(0,0,100,25,10);
- btn.x = 110;
- btn.y = 250;
- btn.buttonMode = true;
- btn.addEventListener(MouseEvent.CLICK, clickHandler);
- addChild(btn);
两个类文件BitString.as, JPGEncoder.as,下载后注意大小写,此wp不知道咋整的,把偶上传时的大写都改成小写了。
php:
- <?php
- if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {
- // get bytearray
- $im = $GLOBALS["HTTP_RAW_POST_DATA"];
- // add headers for download dialog-box
- header('Content-Type: image/jpeg');
- header("Content-Disposition: attachment; filename=".$_GET['name']);
- echo $im;
- } else echo 'An error occured.';
- ?>