我正在做一个上传图片到webservice的程序,用的是Ksoap2连接webservice
然后把图片转换为字节数组 ,再把字节用Base64编码 然后发送到服务器
代码如下
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)
请教大家是怎么做的?有没有这样的问题? 怎么解决?
能看到这里我就非常感谢了!^-^ 能指点一二就更好了 !