我已经尝试过这段代码将图片从图库上传到我的应用程序中的sqllite数据库但是当我的应用程序尝试打开图库时,它会强制关闭错误,我不知道是什么问题。帮助我和thanx在高级< / p>
public class ImagggggggActivity extends Activity {
private static final int SELECT_PICTURE = 1;
private String selectedImagePath;
private ImageView img;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.button1))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// in onCreate or any event where your want the user to
// select a file
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
}
}
}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}}
答案 0 :(得分:1)
使用BLOB数据类型,我们可以将图像存储在SQLite数据库中。实际存储在数据库中的数据是组成图像或文件的字节。
至于从画廊获取图片,看here,看来,你已经忘记了超级&#34;调用
答案 1 :(得分:1)
点击按钮
导入表单设备Intent sdintent = new Intent(Intent.ACTION_PICK);
sdintent.setType("image/*");
startActivityForResult(sdintent, SD_REQUEST);
获取图像表单SD卡
if (requestCode == SD_REQUEST) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
testimage.setImageBitmap(yourSelectedImage);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
byteArray = stream.toByteArray();
}
保存图片
DatabaseAdapter dbHelper = new DatabaseAdapter(Profiles.this);
dbHelper.open();
dbHelper.createUserProfiles( byteArray);
dbHelper.close();
DatabaseAdapter.java中的NOW
定义
public static final String U_PIC = "picture";
然后
private long createUserTableContentValues(long id,byte[] byteImage) {
ContentValues values = new ContentValues();
values.put(ID, id);
values.put(U_PIC, byteImage);
return database.insert(IMAGE_INSERT, null, values);
}
我认为这可能对你有所帮助.....
其他资源: http://www.helloandroid.com/tutorials/store-imagesfiles-database
http://www.coderanch.com/t/507054/Android/Mobile/Storing-image-database
http://hi.baidu.com/_java/blog/item/971e142a13afe6305243c12f.html
http://www.tutorialforandroid.com/2009/10/how-to-insert-image-data-to-sqlite.html
答案 2 :(得分:0)
db.execSQL("CREATE TABLE images ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "data BLOB,"
+ "hash BLOB UNIQUE"
+ ");");
要将图像转换为BLOB,请使用以下代码:(请注意 我们在这里压缩图像)
private byte[] getBitmapAsByteArray(Bitmap bitmap)
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Middle parameter is quality, but since PNG is lossless, it doesn't matter
bitmap.compress(CompressFormat.PNG, 0, outputStream);
return outputStream.toByteArray();
}