forked from github/cordova-android
Add maxResolution flag
This commit is contained in:
@@ -44,6 +44,7 @@ public class CameraLauncher extends Plugin {
|
||||
private static final int SAVEDPHOTOALBUM = 2; // Choose image from picture library (same as PHOTOLIBRARY for Android)
|
||||
|
||||
private int mQuality; // Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
|
||||
private int mMaxResolution; // Maximum resolution of picture taken from camera (width or height, depending on the ratio)
|
||||
private Uri imageUri; // Uri of captured image
|
||||
public String callbackId;
|
||||
|
||||
@@ -65,6 +66,7 @@ public class CameraLauncher extends Plugin {
|
||||
PluginResult.Status status = PluginResult.Status.OK;
|
||||
String result = "";
|
||||
this.callbackId = callbackId;
|
||||
this.mMaxResolution = 0;
|
||||
|
||||
try {
|
||||
if (action.equals("takePicture")) {
|
||||
@@ -76,6 +78,9 @@ public class CameraLauncher extends Plugin {
|
||||
if (args.length() > 2) {
|
||||
srcType = args.getInt(2);
|
||||
}
|
||||
if (args.length() > 3) {
|
||||
this.mMaxResolution = args.getInt(3);
|
||||
}
|
||||
if (srcType == CAMERA) {
|
||||
this.takePicture(args.getInt(0), destType);
|
||||
}
|
||||
@@ -145,6 +150,32 @@ public class CameraLauncher extends Plugin {
|
||||
new String("Get Picture")), (srcType+1)*16 + returnType + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scales the bitmap according to the requested size.
|
||||
*
|
||||
* @param bitmap The bitmap to scale.
|
||||
* @return Bitmap A new Bitmap object of the same bitmap after scaling.
|
||||
*/
|
||||
public Bitmap scaleBitmap(Bitmap bitmap) {
|
||||
int newWidth = 0;
|
||||
int newHeight = 0;
|
||||
|
||||
if (this.mMaxResolution != 0) {
|
||||
|
||||
// Check if a horizontal or vertical picture was taken
|
||||
if (bitmap.getWidth() > bitmap.getHeight()) {
|
||||
newWidth = this.mMaxResolution;
|
||||
newHeight = (int)(((float)bitmap.getHeight() / (float)bitmap.getWidth()) * newWidth);
|
||||
} else {
|
||||
newHeight = this.mMaxResolution;
|
||||
newWidth = (int)(((float)bitmap.getWidth() / (float)bitmap.getHeight()) * newHeight);
|
||||
}
|
||||
// Scale the bitmap before returning a compressed image
|
||||
return Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);
|
||||
}
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the camera view exits.
|
||||
*
|
||||
@@ -168,6 +199,8 @@ public class CameraLauncher extends Plugin {
|
||||
// Read in bitmap of captured image
|
||||
Bitmap bitmap = android.provider.MediaStore.Images.Media.getBitmap(this.ctx.getContentResolver(), imageUri);
|
||||
|
||||
bitmap = scaleBitmap(bitmap);
|
||||
|
||||
// If sending base64 image back
|
||||
if (destType == DATA_URL) {
|
||||
this.processPicture(bitmap);
|
||||
@@ -230,6 +263,7 @@ public class CameraLauncher extends Plugin {
|
||||
if (destType == DATA_URL) {
|
||||
try {
|
||||
Bitmap bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri));
|
||||
bitmap = scaleBitmap(bitmap);
|
||||
this.processPicture(bitmap);
|
||||
bitmap.recycle();
|
||||
bitmap = null;
|
||||
|
||||
Reference in New Issue
Block a user