我已经从AS3 AIR应用程序发送一个图像,旁边的POST参数发送到PHP脚本,剩下的就完成了。我想以某种方式将字节数组与图像转换为字符串并使用base64进行编码。我是成功的,但图像数据是错误的。如何将图像从AS3发送到PHP的字节数组?
下面是我用它转换代码:
...
//BA1 is Byte Array with an image in it
var data:String = BA1.toString();
OutSql.push({t: "b1", v: Base64.encode(data)});
...
一切正常,这个数据被发送到服务器,解码,并存储为图像,但图像是错误的。不知何故,它约为40 kb,而当我将它保存在Air应用程序中时,它是22 kb。有任何想法吗?
p.s.我知道我可以保存并上传它,但我真的需要这样做。此外,BA1.readUTF()生成一个错误,所以不是一个选项。
加成:
在服务器端我写文件之前曾试图utf8_decode串,不知何故我得到的图像是正确的尺寸,但是......那个形象是不是我想要的是,它看起来像涂鸦...
是否'BA1'包含jpeg或png的数据或只是原始位图数据(对于字节使用'getPixels();')?如果它已经jpg/png然后使用'Base64.encode(BA1)',那么B64本身会给你一个字节的编码字符串。无论如何,你的大小是40kb(从22kb)因为你使用了'toString'。考虑两个字节** 0xFF **和** 0xD8 **(总大小为2)现在作为字符串它是** FFD8 **这是总大小4。转换是两倍的大小。如果可能的话,只要做一个'trace(“字节是:”+ BA1);'然后在这里给我看BA1字节的前8个字母。更容易评估格式的方式... –
BA1包含JPEG数据。然而,试图编码BA1会产生一个错误,因为只有字符串可以被编码,而不是字节数组。 –
这里是回答的痕迹: '字节是:ÿØÿàJFIFÿÛ' 这看起来像一个很好的JPEG标题。但其余的数据只是搞砸了。顺便说一下,图片siye是正确的。 –