如何在互联网上保存从数据库上传的照片?

时间:2010-08-31 14:05:58

标签: android photos

在我的Android应用程序中,我想保存从我的数据库上的服务器上传的一些照片,然后再重复使用它们。我想我应该以二进制格式保存它们并将它们的链接保存到数据库中。这是更好的解决方案吗?你能给出一些代码或例子吗?谢谢。

PS:现在我只上传了图像并使用ImageView直接显示,但我想在用户离线时在我的应用程序中使用它。

1 个答案:

答案 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卡获取图像。