Я разрабатываю приложение i, которое пользователи могут загружать изображения с камеры на событие, я сделал это обычным способом, но когда я добрался до части вращения в соответствии с интерфейсом Exif, я бы иногда получал OOM ошибки, которые были действительно разочаровывающими, я решил попробовать JniBitmapOperations library который, казалось, работал нормально (я бы не получил ошибок OOM), но при попытке поворота изображения он становится коррумпированным и испорченным:/heres pictures
 
 
поскольку вы можете видеть, что изображение выше повернуто в правильное положение, но все повреждено один из которых является оригинальным
вот часть соответствующего кода:
        Options options = new Options();
            options.inJustDecodeBounds = true;
            options.inPreferredConfig = Config.ARGB_8888;
            Bitmap srcBitmap = BitmapFactory.decodeFile(tempImageFilePath, options);
            options.inSampleSize = calculateInSampleSize(options);
            options.inJustDecodeBounds = false;
            srcBitmap = BitmapFactory.decodeFile(tempImageFilePath, options);
            ImageLoader.getInstance().clearMemoryCache();
            ImageLoader.getInstance().clearDiscCache();
            final JniBitmapHolder bitmapHolder = new JniBitmapHolder(srcBitmap);
        //if we comment this part out, the image comes out fine but not rotated correctly
            switch (angleFix) {
            case 90:
                bitmapHolder.rotateBitmapCw90();
                break;
            case 180:
                bitmapHolder.rotateBitmapCw90();
                bitmapHolder.rotateBitmapCw90();
                break;
            case 270:
                bitmapHolder.rotateBitmapCcw90();
                break;
            }
            srcBitmap = bitmapHolder.getBitmapAndFree();
//this is the old way which caused OOM errors occasionally
            // Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(), srcBitmap.getHeight(), m, true);
            try {
                FileOutputStream out = new FileOutputStream(tempImageFilePath);
                srcBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (srcBitmap != null) {
                GetImageUploadUrl getUrl = new GetImageUploadUrl();
                getUrl.execute();
            }
        }
    }
Я был бы признателен за любую помощь!
