Android 如何将存储在数据库中的图像以字符串形式显示为真实图像?
如何检索作为真实图像存储在数据库中的图像,我使用了两种不同的方法从数据库中获取图像,但都不适用于我 我有一个类,我试图从数据库中以listview的形式检索图像 在编制项目时,我收到以下信息: resolveUri在错误的位图uri上失败 这是我的课程之一:Android 如何将存储在数据库中的图像以字符串形式显示为真实图像?,android,sql,database,image,bitmap,Android,Sql,Database,Image,Bitmap,如何检索作为真实图像存储在数据库中的图像,我使用了两种不同的方法从数据库中获取图像,但都不适用于我 我有一个类,我试图从数据库中以listview的形式检索图像 在编制项目时,我收到以下信息: resolveUri在错误的位图uri上失败 这是我的课程之一: public class ListProp extends ListActivity { private static final String TAG = ListProp.class.getSimpleName(); private
public class ListProp extends ListActivity {
private static final String TAG = ListProp.class.getSimpleName();
private static final String TAG_PHOTOS = "photoThumbnailUrl";
private SQLiteDatabase database;
private CursorAdapter dataSource;
Cursor cursor;
private static final String fields[] = { "photoThumbnailUrl",
BaseColumns._ID };
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBHelper helper = new DBHelper(this);
database = helper.getReadableDatabase();
database = helper.getWritableDatabase();
Cursor data = database.query(DBHelper.TABLE, fields, null, null, null,
null, null);
dataSource = new SimpleCursorAdapter(this, R.layout.image, data,
fields, new int[] { R.id.image1 });
setListAdapter(dataSource);
System.out.println(dataSource);
database.close();
// selecting single ListView item
final ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println("I'm fine here");
ImageView image = (ImageView) findViewById(R.id.image1);
// get it as a ByteArray
while (cursor.moveToFirst())
;
byte[] imageByteArray = cursor.getBlob(cursor
.getColumnIndex(DBHelper.C_PHOTOS));
// convert it back to an image
ByteArrayInputStream imageStream = new
ByteArrayInputStream(imageByteArray);
Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
Drawable d = new BitmapDrawable(bitmap);
image.setImageResource(R.drawable.ic_launcher);
cursor.close();
lv.addView(image);
}
});
}
public类ListProp扩展了ListActivity{
私有静态最终字符串标记=ListProp.class.getSimpleName();
私有静态最终字符串标记\u PHOTOS=“photoThumbnailUrl”;
专用数据库;
专用游标适配器数据源;
光标;
私有静态最终字符串字段[]={“photoThumbnailUrl”,
BaseColumns.\u ID};
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBHelper=newdbhelper(this);
database=helper.getReadableDatabase();
database=helper.getWritableDatabase();
游标数据=database.query(DBHelper.TABLE,字段,null,null,
空,空);
dataSource=新的SimpleCursorAdapter(这个,R.layout.image,数据,
字段,新的int[]{R.id.image1});
setListAdapter(数据源);
System.out.println(数据源);
close()数据库;
//选择单个ListView项
最终ListView lv=getListView();
//在选择单个列表项时启动新屏幕
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
System.out.println(“我在这里很好”);
ImageView图像=(ImageView)findViewById(R.id.image1);
//把它当作备用品
while(cursor.moveToFirst())
;
字节[]imageByteArray=cursor.getBlob(游标
.getColumnIndex(DBHelper.C_照片));
//将其转换回图像
ByteArrayInputStream imageStream=新建
ByteArrayInputStream(imageByteArray);
位图位图=BitmapFactory.decodeStream(imageStream);
可绘制d=新的位图可绘制(位图);
setImageResource(R.drawable.ic_启动器);
cursor.close();
lv.addView(图像);
}
});
}
}尝试以下教程: 您必须使用BitmapFactory函数decodeByArray:
.setImageBitmap(BitmapFactory.decodeByteArray
希望这有帮助