我正在尝试从服务器下载图像并将其保存在 android 的内部存储中。如果我下载的图像小于 2 MB,它在所有情况下都运行良好。但是当我下载任何大小超过 2 MB 的 JPEG 图像时,我面临两个问题。
第一个是当我尝试使用模拟器从服务器下载和保存图像时,我收到一个错误,例如“位图大小超出 VM 预算”并且活动崩溃。
第二个问题是,当我在手机上运行应用程序时,这个问题不是他们的,而是另一个问题正在发生。当我显示下载的图像时,图像还包含一些其他颜色(彩虹色)。
这是我用来下载和保存图像的代码:
//For downloading the image file
void downloadFile(String fileUrl)
{
URL myFileUrl = null;
try {
myFileUrl = new URL(fileUrl);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
HttpURLConnection conn = (HttpURLConnection) myFileUrl .openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//For saving the downloaded image
void saveImage() {
try
{
String fileName ="displayimg.png";
final FileOutputStream fos = openFileOutput(fileName, Activation.MODE_PRIVATE);
bmImg.compress(CompressFormat.PNG, 90, fos);
} catch (Exception e)
{
e.printStackTrace();
}
}
这是显示图像的代码:
private Bitmap myBitmap;
myBitmap= BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ivDisplayImage.setImageBitmap(myBitmap);