gpt4 book ai didi

android - 相机 Intent 自动旋转到 90 度

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:34 25 4
gpt4 key购买 nike

在我下面的代码中,我尝试使用 native 相机拍摄照片并上传到服务器,但是当我将其作为纵向拍摄并在图库中以横向方式查看时,这意味着它旋转了 90 度。请帮助:-

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent, REQUEST_CAMERA);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CAMERA) {

handleCameraPhoto();
}
private void handleCameraPhoto() {
Intent mediaScanIntent = new Intent(
"android.intent.action.MEDIA_SCANNER_SCAN_FILE");
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);

mediaScanIntent.setData(contentUri);
getActivity().sendBroadcast(mediaScanIntent);
}

如何在保存到 SD 卡之前旋转图像?

最佳答案

我在 ListView 中显示图像时也遇到过这种问题。但是使用 EXIF 数据,我能够解决问题,将图像设置为正确的方向。

这是准备显示的位图对象:

  Matrix matrix = new Matrix();
matrix.postRotate(getImageOrientation(url));
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);

这是在上面代码的第 2 行中用于旋转图像方向的方法。

 public static int getImageOrientation(String imagePath){
int rotate = 0;
try {

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;
}
} catch (IOException e) {
e.printStackTrace();
}
return rotate;
}

这可能不是您问题的准确答案,它对我有用,希望对您有用。

关于android - 相机 Intent 自动旋转到 90 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19511610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com