在我的Android应用程序中,我想保存从我的数据库上的服务器上传的一些照片,然后再重复使用它们。我想我应该以二进制格式保存它们并将它们的链接保存到数据库中。这是更好的解决方案吗?你能给出一些代码或例子吗?谢谢。
PS:现在我只上传了图像并使用ImageView直接显示,但我想在用户离线时在我的应用程序中使用它。
答案 0 :(得分:0)
根据我的经验,实现这一目标的最佳方法是从互联网到SD卡的图像,因为文件访问速度更快。
在我的SD卡中创建我的图像目录的功能......
public static File createDirectory(String directoryPath) throws IOException {
directoryPath = Environment.getExternalStorageDirectory().getAbsolutePath() + directoryPath;
File dir = new File(directoryPath);
if (dir.exists()) {
return dir;
}
if (dir.mkdirs()) {
return dir;
}
throw new IOException("Failed to create directory '" + directoryPath + "' for an unknown reason.");
}
示例:: createDirectory("/jorgesys_images/");
我使用此功能将我的图像从互联网保存到我自己的文件夹到SD卡
private Bitmap ImageOperations(Context ctx, String url, String saveFilename) {
try {
String filepath=Environment.getExternalStorageDirectory().getAbsolutePath() + "/jorgesys_images/";
File cacheFile = new File(filepath + saveFilename);
cacheFile.deleteOnExit();
cacheFile.createNewFile();
FileOutputStream fos = new FileOutputStream(cacheFile);
InputStream is = (InputStream) this.fetch(url);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeStream(is);
bitmap.compress(CompressFormat.JPEG,80, fos);
fos.flush();
fos.close();
return bitmap;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
您将使用此Bitmpap进入您的imageView,当您离线时,您将直接从您的SD卡获取图像。