java .lang.IllegalStateException: невозможно получить getPixels (), доступ к пикселям не поддерживается для растровых изображений Config # HARDWARE - PullRequest
0 голосов
/ 29 февраля 2020

Я получаю цвет vibrantSwatch из растрового изображения с помощью палитры.

Чтобы получить растровое изображение из URI до того, как я написал этот код (в API 29 метод getBitmap был удален):

Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(),
    Uri.fromFile(ImageModelArrayList.get(position).getImageUri()));

Из-за исключения я написал этот код для получения растрового изображения:

 ImageDecoder.Source source = ImageDecoder.createSource(context.getContentResolver(),
                    Uri.fromFile(ImageModelArrayList.get(position).getImageUri()));
            Bitmap bitmap = ImageDecoder.decodeBitmap(source);

Теперь здесь, в этом коде палитры, я получаю cra sh (Если я использую getBitmap, нет проблем. Если я использую ImageDecoder, я получаю cra sh):

Palette p = createPaletteSync(bitmap);
            Palette.Swatch vibrantSwatch = p.getDominantSwatch();
            Log.d(TAG, "onBindViewHolder: vibrantSwatch " + vibrantSwatch);
            if (vibrantSwatch != null) {
                holder.constraintLayout.setBackgroundColor(vibrantSwatch.getRgb());
            }

Ошибка:

2020-02-29 12:32:56.722 9865-9865/com.msp.project E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.msp.project, PID: 9865
java.lang.IllegalStateException: unable to getPixels(), pixel access is not supported on Config#HARDWARE bitmaps
    at android.graphics.Bitmap.checkHardware(Bitmap.java:401)
    at android.graphics.Bitmap.getPixels(Bitmap.java:1760)
...