<?php

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

Tags:

6 Responses to “RE. flash+php截图后保存图片”

  1. zhys9 Says:

    what’s pingback

  2. Yousri Says:

    这个代码高亮你使用的是什么WordPress插件实现的 coolcode么? 还是什么 怎么好像不支持java啊

    ps: 你页面标头那怎么会多出个 <?php 难不成是故意的啊?!

  3. zhys9 Says:

    @Yousri: 不是 coolcode,是codebox
    codebox是支持java的
    <?php 这一块是PHP的代码,所以有这个东西:D

  4. zhys9 Says:

    呵呵,用的是WP-CodeBox
    表头的<?php是故意的 :)

  5. lightoy Says:

    确实没有实现功能,还是看看此文的英文原版吧:http://designreviver.com/tutorials/actionscript-3-jpeg-encoder-revealed-saving-images-from-flash/

  6. zhys9 Says:

    谢谢了~ 这篇文章是从以前同事那里转过来测试ping back的,希望能对大家的思路有点启发

Leave a Reply