我正在使用setImageBitmap
和外部图像url设置ImageView。我想保存图像,以便以后可以使用,即使没有互联网连接。我在哪里以及如何保存它?如何从网址保存图片?
1
A
回答
3
您必须将其保存在SD卡或包数据中,因为在运行时您只能访问这些数据。要做到这一点,这是一个很好的例子
URL url = new URL ("file://some/path/anImage.png");
InputStream input = url.openStream();
try {
//The sdcard directory e.g. '/sdcard' can be used directly, or
//more safely abstracted with getExternalStorageDirectory()
File storagePath = Environment.getExternalStorageDirectory();
OutputStream output = new FileOutputStream (storagePath + "/myImage.png");
try {
byte[] buffer = new byte[aReasonableSize];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
0
3
URL imageurl = new URL("http://mysite.com/me.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(imageurl.openConnection().getInputStream());
此代码将帮助您从图像生成URL的位图。
这个question回答第二部分。
0
可能是它会帮助别人像我一天
new SaveImage().execute(mViewPager.getCurrentItem());//calling function
private void saveImage(int currentItem) {
String stringUrl = Site.BASE_URL + "socialengine/" + allImages.get(currentItem).getMaster();
Utils.debugger(TAG, stringUrl);
HttpURLConnection urlConnection = null;
try {
URL url = new URL(stringUrl);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
File sdCardRoot = Environment.getExternalStorageDirectory().getAbsoluteFile();
String fileName = stringUrl.substring(stringUrl.lastIndexOf('/') + 1, stringUrl.length());
String fileNameWithoutExtn = fileName.substring(0, fileName.lastIndexOf('.'));
File imgFile = new File(sdCardRoot, "IMG" + System.currentTimeMillis()/100 + fileName);
if (!sdCardRoot.exists()) {
imgFile.createNewFile();
}
InputStream inputStream = urlConnection.getInputStream();
int totalSize = urlConnection.getContentLength();
FileOutputStream outPut = new FileOutputStream(imgFile);
int downloadedSize = 0;
byte[] buffer = new byte[2024];
int bufferLength = 0;
while ((bufferLength = inputStream.read(buffer)) > 0) {
outPut.write(buffer, 0, bufferLength);
downloadedSize += bufferLength;
Utils.debugger("Progress:", "downloadedSize:" + Math.abs(downloadedSize*100/totalSize));
}
outPut.close();
//if (downloadedSize == totalSize);
//Toast.makeText(context, "Downloaded" + imgFile.getPath(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
private class SaveImage extends AsyncTask<Integer, Void, String> {
@Override
protected String doInBackground(Integer... strings) {
saveImage(strings[0]);
return "saved";
}
@Override
protected void onPostExecute(String s) {
Toast.makeText(context, "" + s, Toast.LENGTH_SHORT).show();
}
}
相关问题
- 1. 如何从网址保存图片?
- 2. 从网址下载并保存图片
- 3. 从网址保存图像
- 4. 在MySQL中保存图片网址?
- 5. 如何将图片网址保存到会话中
- 6. 如何将图片网址保存到数据库中?
- 7. 如何将图片网址保存到照片库,然后使用保存的图片
- 8. 如何使用ajax将图片网址和图片保存在laravel 5.4中?
- 9. 如何根据网址下载图片并保存图片名称?
- 10. 如何从Javascript设置图片网址
- 11. 如何从网址加载图片
- 12. 如何从网址下载图片?
- 13. Fancybox - 如何从网址加载图片?
- 14. 无法将图片从网址保存到我的服务器
- 15. 从网址抓取图片并保存,大小为0字节
- 16. 从网址保存图片需要很长时间
- 17. 如何将网页保存为图片
- 18. 如何从flickr网址获取静态图片网址?
- 19. iPhone图片保存从网络发出
- 20. 如何从Google云端存储获取图片处理网址?
- 21. 如何从Firebase的存储中检索图片的网址?
- 22. 从网址加载图片
- 23. 从网址保存文件
- 24. 如何从帖子图片网址设置精选图片?
- 25. 如何从网址加载图片到图片框?
- 26. 如何从图片网址列表中创建图片库?
- 27. 图片网址
- 28. 如何更难从我的网页上保存图片?
- 29. 如何从iMacros的网页中保存图片?
- 30. 如何从网页保存间接加载的图片
该代码将无法编译。 'Environment.getExternalStorageDirectory()'不返回一个'String'。 –
更新,现在它会!谢谢 –
什么是合理的尺寸 –