Android Android.графика.Ошибка Bitmap.checkPixelsAccess

#java #android

#java #Android

Вопрос:

Я вижу, что об этой ошибке сообщается через flurry, но понятия не имею, с чем это может быть связано или как найти, где может быть ошибка в моем коде Android.

 class java.lang.IllegalArgumentException
Msg: android.graphics.Bitmap.checkPixelsAccess:823 (x   width must be <= bitmap.width())
  

У кого-нибудь есть идеи, к какой ошибке это может относиться?

Ответ №1:

ваш код должен содержать ранее вызов метода:

yourBitmap.getPixels (pixels, offset, stride, x, y, width, height);

исключение возникает из-за того, что:

ваша начальная координата x величина, которую вы хотите получить из текущей строки, превышает ширину вашего исходного растрового изображения.

Вот картинка, которая может лучше объяснить ситуацию:

введите описание изображения здесь

Надеюсь, это помогло. С уважением.

Ответ №2:

         //encoding method
        Bitmap encodeAsBitmap(String str) throws WriterException {
         int black = 0xFF000000;
         int white = 0xFFFFFFFF;

         int width=400;
         int height=400;

            BitMatrix resu<
            Bitmap bitmap=null;
            try {
                result = new MultiFormatWriter().encode(str,
                        BarcodeFormat.QR_CODE,height ,width , null);

                int w = result.getWidth();
                int h = result.getHeight();
                int[] pixels = new int[w * h];
                for (int y = 0; y < h; y  ) {
                    int offset = y * w;
                    for (int x = 0; x < w; x  ) {
                        pixels[offset   x] = result.get(x, y) ? black : white;
                    }
                }
                bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
//Use the same value of the height and width respectively    
                bitmap.setPixels(pixels, 0, 400, 0, 0, 400, 400);
            } catch (Exception iae) {
                iae.printStackTrace();
                return null;
            }
            return bitmap;
        }