0

これをコードに実装しましたが、BLOB を long に変換できないというエラーが発生します。ここに私が実装したコードがありますが、エラーが発生しています:

Cursor cur = myDbHelper.getImages();  //images has been recieved in cursor

ImageAdapter adapter = new ImageAdapter(this, cur);

lst.setAdapter(adapter);



/* ImageAdapter Class*/
public ImageAdapter(Context context, Cursor cursor) {
        super(context, cursor);
        this.context = context;
        this.cursor = cursor;
    }

public View newView(Context context, Cursor cursor, ViewGroup arg2) {

                LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.residentgallery, null);
        ImageView iv = (ImageView) view.findViewById(R.id.iv1);
        if(cursor.moveToFirst())  
        {  
           do  
           {  
               System.out.println("byte array");
               byte[] data = cursor.getBlob(cursor.getColumnIndex("images"));  
               ByteArrayInputStream imageStream = new ByteArrayInputStream(data);  
               Bitmap theImage = BitmapFactory.decodeStream(imageStream);  
               iv.setImageBitmap(theImage);
               System.out.println("Imageview");
           }  
           while(cursor.moveToNext());  
        }

        return view;
    }

このコードを実行すると、次のエラーが発生します。

android.database.sqlite.SQLiteException: unknown error: Unable to convert BLOB to long

BLOB データ型の sqlite に画像を保存しました。みんな、私を助けてください。

4

1 に答える 1

0

標準ギャラリーから画像/写真を取得する場合:

String[] selectFields = new String[] {
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DISPLAY_NAME,
    // other fields you interested in
    };

Cursor cursor = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selectFields ,where,null,orderBy);
if(cursor!=null && cursor.moveToFirst()){
    int col_id = cursor.getColumnIndex(MediaStore.Images.Media._ID);
    while (!cursor.isAfterLast()) {
        int imageID = cursor.getInt(col_id);
        Uri uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, String.valueOf(imageID));
        InputStream istr = contentResolver.openInputStream(uri);
        Bitmap bitmap= BitmapFactory.decodeStream(istr);
        cursor.moveToNext();
    }
    cursor.close();
}

アプリのプライベート イメージを保存して後で取得する場合:

画像を個別のファイルとして保存し、この画像に関連するファイル名とその他のメタデータのみをデータベースに挿入することをお勧めします。いつでもデータベースからファイル名を選択して、ファイルからイメージを読み取ることができます。

また、内部メモリに大きなファイルをたくさん保存するのもよくありません。もしかしてsdカード使える?

于 2012-06-06T07:09:48.667 に答える