令人蛋疼的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倍以上;

 

所以呢 在应用中 后台需要的数据是源 而不需要变化以后的数据 可以直接在得到源的时候保存二进制流 这样不会改变大小而产生我这个问题了

随便侃侃 不贴代码了

 

 

posted @ 2011-11-18 12:47  Hanami  阅读(749)  评论(0编辑  收藏  举报