Open farrakhj opened 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); }
@iamutkarshtiwari
Hi @farrakhj, thank you for reporting this issue! Oh, you already found the cause. Would you like to make a PR for it?
Sure i would like to create PR for it. Can you please guide the steps as i am new at GitHub?
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.