如何从图像按钮获取位图

时间:2018-10-26 04:35:41

标签: java android sqlite

当我点击ImageButton时,我将拥有bitmap画廊,以供选择图像并将ImageButton发送回去显示。 但是我必须获取显示在此ImageButton上的bitmap,然后将其另存为byte[]

到数据库中

4 个答案:

答案 0 :(得分:1)

从图库中加载图像时,您已经具有对其的URI引用,或者您具有位图。希望以下帮助

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);

现在,如果要从imageButton获取位图,则可以使用

Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();

也请参阅How to get Bitmap from an Uri?,以了解更多信息

答案 1 :(得分:0)

尝试

Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();

答案 2 :(得分:0)

首先从{as: "AS45194 Syscon Infoway Pvt. Ltd.", city: "Thane", country: "India", countryCode: "IN", isp: "Syscon Infoway Pvt.", …} 获得bitmap

ImgaeButton

然后将此Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap(); 转换为bitmap

byteArray

答案 3 :(得分:0)

您可以使用Blob将图像存储在sqlite android内部数据库中。

***以下答案是从How to store image in SQLite database完全复制的-功劳归答案提供商

public void insertImg(int id,Bitmap img){

    byte[] data = getBitmapAsByteArray(img); // this is a function

    insertStatement_logo.bindLong(1, id);       
    insertStatement_logo.bindBlob(2, data);

    insertStatement_logo.executeInsert();
    insertStatement_logo.clearBindings() ;

}

 public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, outputStream);       
    return outputStream.toByteArray();
}

从数据库检索图像

公共位图getImage(int i){

String qu = "select img  from table where feedid=" + i ;
Cursor cur = db.rawQuery(qu, null);

if (cur.moveToFirst()){
    byte[] imgByte = cur.getBlob(0);
    cur.close();
    return BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
}
if (cur != null && !cur.isClosed()) {
    cur.close();
}       

return null ;
}