2017-05-12 7 views
-1

画像パスのURLが取得されていますが、そのURLから画像を取得してローカルデータベースに保存したいのですが、それをバイトに変換できませんデータベース内のBLOBはそれを受け入れます。私はたくさんの努力をしましたが、すべてが無駄です。私はコードを使用しましたが、ByteArrayBufferは型を解決しませんでした。AndroidアプリケーションのローカルデータベースのURLから画像を保存して取得する

// code to convert image url into byte array 

private byte[] getLogoImage(String url) { 
    try { 
     URL imageUrl = new URL(url); 
     URLConnection ucon = imageUrl.openConnection(); 
     System.out.println("11111"); 
     InputStream is = ucon.getInputStream(); 
     System.out.println("12121"); 

     BufferedInputStream bis = new BufferedInputStream(is); 
     System.out.println("22222"); 

     ByteArrayBuffer baf = new ByteArrayBuffer(500); 
     int current = 0; 
     System.out.println("23333"); 

     while ((current = bis.read()) != -1) { 
      baf.append((byte) current); 

     } 
     photo = baf.toByteArray(); 
     System.out.println("photo length" + photo); 


    } catch (Exception e) { 
     Log.d("ImageManager", "Error: " + e.toString()); 
    } 
    return accImage; 
} 

はその後、私はあなたが全体のイメージを保存している理由

+0

ことによってあなたの方法を交換して、データベースに保存するためにチュートリアル「https://github.com/CoderzHeaven/StoreImageSqliteAndroid」を使用していますか? URLを保存してイメージローダーを使用してみてはどうでしょうか? –

+0

なぜlocalDBにイメージを保存する必要がありますか? –

+0

なぜ画像ローダーを使用していないのですか? @Dheeraj –

答えて

0

この

private byte[] getLogoImage(String url) { 
try { 
    URL imageUrl = new URL(url); 
    URLConnection ucon = imageUrl.openConnection(); 
    System.out.println("11111"); 
    InputStream is = ucon.getInputStream(); 
    System.out.println("12121"); 

    byte[] buffer = new byte[8192]; 
    int bytesRead; 
    ByteArrayOutputStream accImage = new ByteArrayOutputStream(); 
    while ((bytesRead = is.read(buffer)) != -1) { 
    accImage.write(buffer, 0, bytesRead); 
    } 

    return accImage.toByteArray(); 

} catch (Exception e) { 
    Log.d("ImageManager", "Error: " + e.toString()); 
} 
return null; 
} 
0
**You can try this method for download and save image into database** 

public class MainActivity extends Activity { 
    protected SQLiteDatabase sqlitedatabase_obj; 
    DataBaseHelper databasehlpr_obj; 
    int accId; 
    byte[] accImage; 

    byte[] logoImage; 
    byte[] photo;@Override 

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    AndroidContext.setContext(this); 
    sqlitedatabase_obj = DataBaseHelper.getInstance().getDb(); 
    new ImageDownloader().execute("http://images.100bestbuy.com/images/small_137385013870957.jpg"); 
} 
/* get logo image method */ 
private byte[] getLogoImage(String url) { 
    try { 
    URL imageUrl = new URL(url); 
    URLConnection ucon = imageUrl.openConnection(); 
    System.out.println("test1"); 
    InputStream is = ucon.getInputStream(); 
    System.out.println("test2"); 

    BufferedInputStream bis = new BufferedInputStream(is); 
    System.out.println("test3"); 

    ByteArrayBuffer baf = new ByteArrayBuffer(500); 
    int current = 0; 
    System.out.println("test4"); 

    while ((current = bis.read()) != -1) { 
     baf.append((byte) current); 

    } 
    photo = baf.toByteArray(); 
    System.out.println("photo length" + photo); 


} catch (Exception e) { 
    Log.d("ImageManager", "Error: " + e.toString()); 
} 
return accImage; 
} 

public void insertUser() { 
    ContentValues userdetailValues = new ContentValues(); 
    userdetailValues.put("account_image", photo); 
    sqlitedatabase_obj.insert(DataBaseHelper.IMG_table, null, userdetailValues); 
} 
/* AsyncTask method */ 
private class ImageDownloader extends AsyncTask<String, Void, Void> { 

    private ProgressDialog progressDialog; 

    @Override 
    protected Void doInBackground(String... param) { 

     sqlitedatabase_obj.delete(DataBaseHelper.IMG_table, null, null); 
     logoImage = getLogoImage(param[0]); 

     insertUser(); 
    } 

    @Override 
    protected void onPreExecute() { 

     progressDialog = ProgressDialog.show(MainActivity.this, "Wait", "Downloading Image"); 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     progressDialog.dismiss(); 

    } 

} 

} 
関連する問題