我是一名 .NET 开发人员,但我遇到的问题与 .NET 无关
即使我的问题听起来很微不足道,请记住这一点。
这是我的问题:
我们在浏览器中有一个 swf,它与 java 扩展进行通信
它使用 Smartfox Server 完成(用于 MMO 应用程序)
我们从 swf 中抓取屏幕的一部分作为操作脚本 (3) 中的“字节数组”。 在 Java 中,我们调用一个函数将 ByteArray 转换为 Image,然后保存它。
我们的 Java 开发人员遇到了错误
java.lang.illegalArgumentException
当java函数执行时。
基本上,我想知道的是:
如何在 Java 中从 ActionScript 接受对象类型字节数组?
在 ActionScript 中映射到字节数组的 Java 对象类型是什么?
我敢说转换部分很简单。
更新:
ActionScript 部分中的代码
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 检索对象时存在一个小不匹配。
现在错误不同了。
Array reading not succesful. Error is: java.io.NotSerializableException: it.goto andplay.smartfoxserver.lib.ActionscriptObject
问候,
纳维尼
最佳答案
flash.utils.ByteArray
映射到 Java 的 byte[]
类型。
关于java - 将字节数组从 ActionScript 转换为 Java 中的图像并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116017/