android从URL获取图像并保存在SQLite数据库中并将其设置为Bitmap

时间:2014-12-14 10:06:06

标签: android sqlite bitmap android-sqlite android-file

我有从URL下载图像到SDCard的代码,但我的设备只能从位图设置图像。 问题是如何将URL中的图像直接用于SQLite数据库,然后将其作为位图进行检索?

感谢您的帮助

public void getNewLogoFromURL(String logo) throws IOException {
        new GetLogo().execute(logo);
    }

    class GetLogoForReceipt extends AsyncTask <String, Void, Void> {

        @Override
        protected Void doInBackground(String... params) {
            try {
                downloadFile(params[0]);
            } catch ( IOException e ) {

            }
            return null;
        }
    }

     public void downloadFile(String url) throws IOException {
            DataOutputStream fos = null;
            try {
                File dest_file = new File("/sdcard/Pictures/applicationLogo.png");
                URL u = new URL(url);
                URLConnection conn = u.openConnection();
                int contentLength = conn.getContentLength();
                DataInputStream stream = new DataInputStream(u.openStream());
                byte[] buffer = new byte[contentLength];
                stream.readFully(buffer);
                stream.close();
                 fos = new DataOutputStream(new FileOutputStream(dest_file));
                fos.write(buffer);
                fos.flush();
            } finally {
                fos.close();
            }
        }

//Device image settingUp code

    String[] fileList = { "applicationLogo.png" };
        Bitmap[] bitmap = new Bitmap[fileList.length];

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap bitmap2 = BitmapFactory.decodeFile("/sdcard/Pictures/applicationLogo.png", options);

        for ( int i = 0; i < fileList.length; i++ ) {
            bitmap[i] = bitmap2;
        }
        int ret;
        printer = new LinePrinter();
        ret = printer.open(device);
        ret = printer.setBitmap(bitmap);

1 个答案:

答案 0 :(得分:2)

在sqlite数据库中存储位图/图像是个坏主意。将图像下载到SD卡并将位置保存在数据库中,并在需要时从SD卡中检索图像。 下面的代码显示了从sdcard获取位图。

public Bitmap createBitMap(String path){
File file = new File(path);
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
return bitmap;

}