我正在做一个上传图片到webservice的程序,用的是Ksoap2连接webservice
然后把图片转换为字节数组 ,再把字节用Base64编码 然后发送到服务器
代码如下
- Java code
String imageBmp=new String(Base64.encode(BitmaptoBytes(myBitmap))); private static byte[] BitmaptoBytes(Bitmap bm)//把bitmap转换为字节数组------------------------------------ { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); return baos.toByteArray(); } catch(Exception e) { Toast.makeText(new RunBowTMSActivity(),"转换失败",Toast.LENGTH_LONG).show(); return null; } }
上传几百K的图片没有问题,但是再上传一张700多K的图片是就报错了 报错信息如下
05-10 02:40:46.843: E/dalvikvm-heap(737): Out of memory on a 3018698-byte allocation.
05-10 02:40:46.883: E/AndroidRuntime(737): FATAL EXCEPTION: main
05-10 02:40:46.883: E/AndroidRuntime(737): java.lang.OutOfMemoryError
05-10 02:40:46.883: E/AndroidRuntime(737): at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)
05-10 02:40:46.883: E/AndroidRuntime(737): at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:216)
05-10 02:40:46.883: E/AndroidRuntime(737): at adidas.TMS.AndroidHttpTransport.call(AndroidHttpTransport.java:38)
请教大家是怎么做的?有没有这样的问题? 怎么解决?
能看到这里我就非常感谢了!^-^ 能指点一二就更好了 !
------解决方案--------------------
你转换之前 压缩了 不知道是不是那里出问题了
你的转换为二进制数组没问题 都是这么做的