我试图从web下载一个jpg图像并将其保存到一个字节数组中,以便在RAM上获得压缩图像,直到我必须显示它,但我得到一个黑色的图片。从网络上下载一个jpg图像并将其保存到RAM上的一个字节数组中
我在做什么是:
URL myFileUrl =null;
myFileUrl= new URL(fileUrl);
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
conn.setUseCaches(false);
InputStream is = conn.getInputStream();
byte[] ba = new byte[is.available()];
在那之后我保持数组中的RAM,直到我不得不使用它。
要放置它,我做的:
Bitmap bitmapFromByteArray = BitmapFactory.decodeByteArray(ba,0,ba.length);
imageView1.setImageBitmap(bitmapFromByteArray);
bitmapFromByteArray.recycle();
我通过这样做,我解码JPEG,然后做
URL myFileUrl =null;
myFileUrl= new URL(fileUrl);
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
int size = bm.getWidth() * bm.getHeight();
ByteArrayOutputStream out = new ByteArrayOutputStream(size);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
byte[] ba2 = out.toByteArray();
bm.recycle()
Buut解决了这个问题重新编码图像多次降低图片的质量并使用超过必要的电话资源。此外,重新编码后得到的位图比原始jpg图像大。
有没有办法让第一种方法工作?
谢谢。
是的,我知道这是一个noob问题。问题是我不知道如何初始化字节数组。应该多久?有没有可能你有Apache公用(IOUtils)的例子? – 2011-03-30 16:18:08
坦克你。这个应用程序在用于丢弃memoryOutOfBoundsException之前(当我保存Bitmaps的图像时),不,我可以将它们保存为jpg(或jpg类)并保持质量。 – 2011-03-31 05:57:19
我找不到IOUtils。你可以说它包括哪些包? Niether我在org.apache.commons中有io,这就是为什么我无法访问org.apache.commons.io.IOUtils。 “ – Debopam 2012-07-29 07:46:48