iamutkarshtiwari / Ananas

An easy image editor integration for your Android apps.
MIT License
252 stars 113 forks source link

App crash if big size image is provided #105

Open farrakhj opened 2 years ago

farrakhj commented 2 years ago

In the below method from EditImageActivity app crashes if large image(provided 14MB image) is provided. private Single loadImage(String filePath) { return Single.fromCallable(() -> BitmapUtils.getSampledBitmap(filePath, imageWidth, imageHeight)); }

public static Bitmap getSampledBitmap(String filePath, int reqWidth, int reqHeight) throws FileNotFoundException { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); options.inPreferredConfig = Bitmap.Config.RGB_565; options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); }

If image size is small or big getSampleBitmap method always calculate sample size as 1.

If anyone faced this issue please post against this issue.

farrakhj commented 2 years ago

Above code create BitmapFactory.Options with options instance. options instance is never loaded with filePath image data. So this always return sampleSize 1 for every image. The correct code should be as below. Line added in highlighted:

public static Bitmap getSampledBitmap(String filePath, int reqWidth, int reqHeight) throws FileNotFoundException { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true;

BitmapFactory.decodeFile(filePath, options);

options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); options.inPreferredConfig = Bitmap.Config.RGB_565; options.inJustDecodeBounds = false;` return BitmapFactory.decodeFile(filePath, options); }

farrakhj commented 2 years ago

@iamutkarshtiwari

iamutkarshtiwari commented 2 years ago

Hi @farrakhj, thank you for reporting this issue! Oh, you already found the cause. Would you like to make a PR for it?

farrakhj commented 2 years ago

Sure i would like to create PR for it. Can you please guide the steps as i am new at GitHub?