2

getThumbnailの場合、Androidドキュメントには次のものがあります。

public static Bitmap getThumbnail(ContentResolver cr、long origId、long groupId、int kind、BitmapFactory.Optionsオプション)

Camera.TakePictureで写真を撮るときに、origId(getThumbnailを実行する元の画像のID)を取得する方法がまったくわかりません。

私が読んだ他のさまざまな質問に基づく私の現在の試みは次のとおりです。

String[] projection = { MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA };
    String sort = MediaStore.Images.ImageColumns._ID + " DESC";
    Log.d("getting IDs:",sort);
    Cursor myCursor = managedQuery(imagesUri, projection, null, null, sort);
    myCursor.moveToFirst();
    thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), myCursor.getLong(myCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID)), MediaStore.Images.Thumbnails.MINI_KIND, null );

ただし、ログは実際のIDとなる文字列 "_ID"を出力しているため、myCursorを作成しようとした行でnullポインター例外が発生します。

SDカードの画像にはIDがないという他の人の同様の質問への回答としても読みました。その場合、origIDは実際にはURIであり、ドキュメントがめちゃくちゃになっていると思いますか?私は非常に混乱しており、どんな説明でも大歓迎です。

4

1 に答える 1

2

画像の場所へのパスを正常に使用する方法が見つからなかったため、getThumbnailを使用できなくなりました。また、(少なくとも、レポートが提出されたと思いますが)問題が発生しました。サムネイルが予想される場所に保存されていないデバイス。

これに対する私の解決策は、AndroidのgetThumbnailを使用する代わりに、独自の小さなサムネイルジェネレーターを作成することで、回避できることを望んでいたものになりました。

public class CreateThumbnail extends Activity {
    Bitmap imageBitmap;
    public Bitmap notTheBestThumbnail(String file) {
        byte[] imageData = null;
        try     
        {

            final int THUMBNAIL_SIZE = 95;

            FileInputStream fis = new FileInputStream(file); //file is the path to the image-to-be-thumbnailed.
            imageBitmap = BitmapFactory.decodeStream(fis);
            imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 10, baos); //What image format and level of compression to use.
            imageData = baos.toByteArray();

        }
        catch(Exception ex) {
            Log.e("Something did not work", "True");
        }
        return imageBitmap;
    }   
}

私は次のようなクラスを使用します:

CreateThumbnail thumb = new CreateThumbnail();
thumb.notTheBestThumbnail(Environment.getExternalStorageDirectory() + "/exampleDir" + "/" + exampleVar  + "/example_img.jpg");
Bitmap mBitmap = thumb.imageBitmap; //Assigns the thumbnail to a bitmap variable, for manipulation.

IDの取得方法は実際にはわかりませんでしたが、getThumbnailで同様の問題に直面している人に役立つことを願っています。

于 2013-03-29T21:00:56.017 に答える