RE. flash+php截图后保存图片
pingback test…
as2时代要实现该功能只有在本地draw完bitmap后,把所有widthxheight的图片都储存到数组里然后post给php,php通过gd库来生成,虽然可以不过效率就…一张120×90的图就够flash运算半天了.
as3要实现这个功能虽然还要借助php,但是只是借助php把图片数据给echo出来而已.图片生成关键步骤都在客户端进行了.
另外还需要adobe官方的as3corelib包.
客户端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import com.adobe.images.JPGEncoder; import flash.display.BitmapData; import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.navigateToURL; import flash.utils.ByteArray; //画位图数据 var jpgSource:BitmapData = new BitmapData (picture.width, picture.height); jpgSource.draw(picture); //生成编码容器 var jpgEncoder:JPGEncoder = new JPGEncoder(95); //将位图数据编码到容器内成为ByteArray流 var jpgStream:ByteArray = jpgEncoder.encode(jpgSource); //压缩ByteArray流 jpgStream.compress(); //添加stream的header请求 var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); var jpgURLRequest:URLRequest = new URLRequest("save.php"); jpgURLRequest.requestHeaders.push(header); jpgURLRequest.method = "POST"; jpgURLRequest.data = jpgStream; //推送图片数据到服务器端 navigateToURL(jpgURLRequest, "_blank"); |
服务器端:
1 2 3 4 5 | <?php $jpg = gzuncompress($GLOBALS["HTTP_RAW_POST_DATA"]); header("Content-Type: image/jpeg"); echo $jpg; ?> |
这样的服务端代码没有实现保存图片吧。。
http://hirokimo.com/?p=49
February 10th, 2009 at 23:50
what’s pingback
February 18th, 2009 at 13:32
这个代码高亮你使用的是什么WordPress插件实现的 coolcode么? 还是什么 怎么好像不支持java啊
ps: 你页面标头那怎么会多出个 <?php 难不成是故意的啊?!
February 18th, 2009 at 15:00
@Yousri: 不是 coolcode,是codebox
codebox是支持java的
<?php 这一块是PHP的代码,所以有这个东西:D
March 14th, 2010 at 19:58
呵呵,用的是WP-CodeBox
表头的<?php是故意的 :)
May 20th, 2010 at 10:00
确实没有实现功能,还是看看此文的英文原版吧:http://designreviver.com/tutorials/actionscript-3-jpeg-encoder-revealed-saving-images-from-flash/
June 22nd, 2010 at 23:50
谢谢了~ 这篇文章是从以前同事那里转过来测试ping back的,希望能对大家的思路有点启发