令人蛋疼的ByteArray
最近做的一个项目需要上传比较多的图片到服务器,服务器限制大小是2M,在项目中,图片的大小都是有控制的,为100K;
在交互中,返回给我"HTTP STATUS 413" 上传实体过大,超过服务器大小。
这让我很纠结,我传给服务器的是二进制流 ByteArray
然后想当然的去计算,上传的图片在10张以内,每张大小都为 56k , 56*10不足1M。
怎么会返回实体过大呢?
后来检查程序以后,才发现,原来我上传的二进制流,不是在打开时候加载进来的源,而是通过转换的。这也就是ByteArray的效率。
网上找过一个BitampData 和 ByteArray 转换的例子:
http://hi.baidu.com/sacrtap/blog/item/5464db13e55a1c30dd540193.html
http://wiki.9ria.com/%E5%9B%BE%E5%BD%A2%E5%A4%84%E7%90%86
这位仁兄说:
一个1024*1024大小的bitmapdata,通过此方式转换为bytearray并保存在sharedobject中有4M之巨!其实手工算一下也应如此:1024*1024*4/1024/1024 = 4
按这样倍数算的话 我上传的集就已经超过2M了; 还是不怎么相信 果然 在最后将每张图片都去保存后,得到的图片大小等于原图的3倍以上;
所以呢 在应用中 后台需要的数据是源 而不需要变化以后的数据 可以直接在得到源的时候保存二进制流 这样不会改变大小而产生我这个问题了
随便侃侃 不贴代码了