此应用程序可以拍照并将其存储在平板电脑上。 我有一些问题,因为这个应用程序使用Odoo框架,我不知道这是一个框架的问题或我想念Android代码的东西。
问题在于,当我拍照时,只有当我使用平板电脑风景并且使用右侧的主页按钮时,图像才是好的。 如果我改变旋转并拍照,图像会旋转...... 例如,如果我拍摄横向照片和左侧的主页按钮,图像是颠倒的... 如果我把它拍成肖像,图像会旋转90°....
Android请求图片不管理与设备旋转相关的图像旋转? 因为如果是......这是与odoo框架相关的问题......如果不是我需要管理它。
EDIT ___
我们调整图像大小并使用Base64进行存储,并在手机离线时与odoo同步数据。
onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult() method");
OValues response = fileManager.handleResult(requestCode, resultCode, data);
if (response != null) {
projectIssueImage = new ProjectIssueImage(this, null);
OValues values = new OValues();
String imageBase64 = BitmapUtils.uriToBase64(Uri.parse(response.getString("file_uri")), getContentResolver(), false);
byte[] decodedImage = Base64.decode(imageBase64, Base64.DEFAULT);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(decodedImage, 0, decodedImage.length);
Bitmap scaledBitmap = scaleDown(bitmapImage, 1000, true);
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOS);
values.put("image", Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT));
values.put("file_name", response.get("datas_fname"));
values.put("file_type", response.get("file_type"));
values.put("issue_id", currentObject);
int _id = projectIssueImage.insert(values);
}
Intent returnIntent = new Intent();
returnIntent.putExtra("id", currentObject);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
调整图片大小的代码
public static Bitmap scaleDown(Bitmap realImage, float maxImageSize,
boolean filter) {
float ratio = Math.min(
(float) maxImageSize / realImage.getWidth(),
(float) maxImageSize / realImage.getHeight());
int width = Math.round((float) ratio * realImage.getWidth());
int height = Math.round((float) ratio * realImage.getHeight());
Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width, height, filter);
return newBitmap;
}
答案 0 :(得分:0)
检查这是否有帮助。
public int getCameraPhotoOrientation(Context context, Uri imageUri, String imagePath){
int rotate = 0;
try {
context.getContentResolver().notifyChange(imageUri, null);
File imageFile = new File(imagePath);
ExifInterface exif = new ExifInterface(imageFile.getAbsolutePath());
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
Log.i("RotateImage", "Exif orientation: " + orientation);
Log.i("RotateImage", "Rotate value: " + rotate);
} catch (Exception e) {
e.printStackTrace();
}
return rotate;
}