Fixes a crash when reorienting and downsizing an image for upload. Closes #247
This commit is contained in:
		
					parent
					
						
							
								ab76121692
							
						
					
				
			
			
				commit
				
					
						f7915d614d
					
				
			
		
					 1 changed files with 11 additions and 5 deletions
				
			
		|  | @ -86,7 +86,9 @@ class DownsizeImageTask extends AsyncTask<Uri, Void, Boolean> { | |||
|         try { | ||||
|             Bitmap result = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), | ||||
|                     bitmap.getHeight(), matrix, true); | ||||
|             bitmap.recycle(); | ||||
|             if (!bitmap.sameAs(result)) { | ||||
|                 bitmap.recycle(); | ||||
|             } | ||||
|             return result; | ||||
|         } catch (OutOfMemoryError e) { | ||||
|             return null; | ||||
|  | @ -180,17 +182,21 @@ class DownsizeImageTask extends AsyncTask<Uri, Void, Boolean> { | |||
|                 if (scaledBitmap == null) { | ||||
|                     return false; | ||||
|                 } | ||||
|                 reorientBitmap(scaledBitmap, orientation); | ||||
|                 Bitmap reorientedBitmap = reorientBitmap(scaledBitmap, orientation); | ||||
|                 if (reorientedBitmap == null) { | ||||
|                     scaledBitmap.recycle(); | ||||
|                     return false; | ||||
|                 } | ||||
|                 Bitmap.CompressFormat format; | ||||
|                 /* It's not likely the user will give transparent images over the upload limit, but | ||||
|                  * if they do, make sure the transparency is retained. */ | ||||
|                 if (!scaledBitmap.hasAlpha()) { | ||||
|                 if (!reorientedBitmap.hasAlpha()) { | ||||
|                     format = Bitmap.CompressFormat.JPEG; | ||||
|                 } else { | ||||
|                     format = Bitmap.CompressFormat.PNG; | ||||
|                 } | ||||
|                 scaledBitmap.compress(format, 75, stream); | ||||
|                 scaledBitmap.recycle(); | ||||
|                 reorientedBitmap.compress(format, 75, stream); | ||||
|                 reorientedBitmap.recycle(); | ||||
|                 scaledImageSize /= 2; | ||||
|                 iterations++; | ||||
|             } while (stream.size() > sizeLimit); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue