将字节数组从Action Script转换为Java中的Image并保存

时间:2010-06-25 06:31:45

标签: java actionscript-3 bytearray

我是.NET开发人员,但我遇到的问题与.NET无关 即使我的问题听起来很微不足道,请记住这一点。

这是我的问题:

我们在浏览器中有一个swf,它与java扩展通信 它使用Smartfox Server(用于MMO应用程序)

完成

从swf我们在动作脚本(3)中抓取屏幕的一部分作为“字节数组”。 在Java中,我们调用一个函数将ByteArray转换为Image然后保存它。

我们的Java开发人员遇到错误

  

<德尔> java.lang.IllegalArgumentException异常

执行java函数时。

基本上,我想知道的是:

如何从Java中的ActionScript接受对象类型字节数组?
什么是在ActionScript中映射到字节数组的Java对象类型?
我敢说,转换部分很简单。

更新:

ActionScript Section中的代码

public function savePhoto(uName:String, ba:ByteArray, descr:String):void{
    var obj:Object = {};
    obj.arr = ba;
    obj.desc = descr;
    sfsConnectobj.photoSectionSave(obj,"save");
}

public function photoSectionSave(targetObject:Object,type:String) {
    sfs.sendXtMessage("trialjava", "save", targetObject);
}

第一个函数调用Java中的SmartFox扩展。 扩展名是“trialjava.js”

接受该功能的Java代码是

public void handleRequest(String cmd, ActionscriptObject ao, User u, int fromRoom)
{
    try {
        ActionscriptObject arr = ao.getObj("arr");
        String dirName="C:\\";
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos;
            oos = new ObjectOutputStream(bos);
            oos.writeObject(ao.getObj("arr"));
            oos.flush();
            oos.close();
            bos.close();
            byte [] data = bos.toByteArray();
            BufferedImage imag=ImageIO.read(new ByteArrayInputStream(data));
            ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));

    } 
    catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println("Array reading not succesful. Error is: "+e);
    }
}

似乎在通过java检索对象时存在一些小的不匹配。

现在错误不同了。

  

数组读数不成功。错误是:   java.io.NotSerializableException:   it.goto   andplay.smartfoxserver.lib.ActionscriptObject

的问候,
naveenj

3 个答案:

答案 0 :(得分:2)

flash.utils.ByteArray映射到Java的byte[]类型。

答案 1 :(得分:0)

我不确定这是否是一个问题,但根据Flash安全模型,如果SWF从其他主机/域加载媒体,那么屏幕捕获将导致错误。 你能检查收到的字节数组吗?它的大小是多少?并尝试打印它的起始值。

答案 2 :(得分:-1)

不直接接收字节数组。它来自一个AS对象。这里真正的问题是如何将ActionScript对象中的这个字节数组转换为Java字节数组对象。

我是上述Java开发人员,我正在这样做。