diff --git a/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java b/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java index fcec51eac..474dc0298 100644 --- a/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java +++ b/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java @@ -21,7 +21,7 @@ import java.lang.ref.WeakReference; class BarcodeImageWriterTask extends AsyncTask { private static final String TAG = "LoyaltyCardLocker"; - private static final int MAX_WIDTH = 600; + private static final int MAX_WIDTH = 500; private final WeakReference imageViewReference; private final String cardId; @@ -37,11 +37,19 @@ class BarcodeImageWriterTask extends AsyncTask cardId = cardIdString; format = barcodeFormat; - imageHeight = imageView.getHeight(); - // No matter how long the window is, there is only so much space - // needed for the barcode. Put a limit on it to reduce memory usage - imageWidth = Math.min(imageView.getWidth(), MAX_WIDTH); + if(imageView.getWidth() < MAX_WIDTH) + { + imageHeight = imageView.getHeight(); + imageWidth = imageView.getWidth(); + } + else + { + // Scale down the image to reduce the memory needed to produce it + imageWidth = MAX_WIDTH; + double ratio = (double)MAX_WIDTH / (double)imageView.getWidth(); + imageHeight = (int)(imageView.getHeight() * ratio); + } } public Bitmap doInBackground(Void... params)