Add skip processing on android for fast picture saving

This commit is contained in:
Oscar Franco 2018-04-03 07:23:55 +02:00
parent e6e4f8d725
commit 0eddf6d391

View File

@ -53,6 +53,31 @@ public class ResolveTakenPictureAsyncTask extends AsyncTask<Void, Void, Writable
WritableMap response = Arguments.createMap(); WritableMap response = Arguments.createMap();
ByteArrayInputStream inputStream = null; ByteArrayInputStream inputStream = null;
if (mOptions.hasKey("skipProcessing")) {
try {
// Prepare file output
File imageFile = new File(RNFileUtils.getOutputFilePath(mCacheDirectory, ".jpg"));
imageFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(imageFile);
// Save byte array (it is already a JPEG)
fOut.write(mImageData);
// Return file system URI
String fileUri = Uri.fromFile(imageFile).toString();
response.putString("uri", fileUri);
} catch (Resources.NotFoundException e) {
mPromise.reject(ERROR_TAG, "Documents directory of the app could not be found.", e);
e.printStackTrace();
} catch (IOException e) {
mPromise.reject(ERROR_TAG, "An unknown I/O exception has occurred.", e);
e.printStackTrace();
}
return response;
}
// we need the stream only for photos from a device // we need the stream only for photos from a device
if (mBitmap == null) { if (mBitmap == null) {
mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length); mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length);
@ -143,7 +168,7 @@ public class ResolveTakenPictureAsyncTask extends AsyncTask<Void, Void, Writable
int width = bm.getWidth(); int width = bm.getWidth();
int height = bm.getHeight(); int height = bm.getHeight();
float scaleRatio = (float) newWidth / (float) width; float scaleRatio = (float) newWidth / (float) width;
return Bitmap.createScaledBitmap(bm, newWidth, (int) (height * scaleRatio), true); return Bitmap.createScaledBitmap(bm, newWidth, (int) (height * scaleRatio), true);
} }