当前位置: 首页 > 知识库问答 >
问题:

在ImageView中旋转图像

慕容宏邈
2023-03-14

在我的应用程序中,图像是从相机捕获的,然后显示在ImageView
我已经成功地完成了此方法,但是当我的图像显示在ImageView中时,图像显示在旋转后
我想旋转图像,然后在ImageView中显示
当我单击前摄像头上的图像时,在下面代码的帮助下,图像显示正确

Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap rotate = Bitmap.createBitmap(scale,0,0,scale.getWidth(),scale.getHeight(),matrix,true);
displayImage.setImageBitmap(rotate); 


但当我从后摄像头点击时,图像将显示在前摄像头的对面。还有一件事,当我从不同角度单击“来自摄影机的图像”时,图像将以不同角度显示在ImageView中。

共有1个答案

堵才哲
2023-03-14

我在应用程序中使用以下代码<它对我有用

    File mediaFile = new File(mediaPath);
            Bitmap bitmap;
            if (mediaFile.exists()) {

                if (isImage(mediaPath)) {

                    Bitmap myBitmap = BitmapFactory.decodeFile(mediaFile.getAbsolutePath());
                    int height = (myBitmap.getHeight() * 512 / myBitmap.getWidth());
                    Bitmap scale = Bitmap.createScaledBitmap(myBitmap, 512, height, true);
                    int rotate = 0;
                    try {
                        exif = new ExifInterface(mediaFile.getAbsolutePath());
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                            ExifInterface.ORIENTATION_UNDEFINED);
                    switch (orientation) {
                    case ExifInterface.ORIENTATION_NORMAL:
                        rotate = 0;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        rotate = 270;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        rotate = 180;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        rotate = 90;
                        break;
                    }

                    Matrix matrix = new Matrix();
                    matrix.postRotate(rotate);
                    Bitmap rotateBitmap = Bitmap.createBitmap(scale, 0, 0, scale.getWidth(),
                            scale.getHeight(), matrix, true);
                    displayImage.setImageBitmap(rotateBitmap);
       }
}
public static boolean isImage(String str) {
        boolean temp = false;
        String[] arr = { ".jpeg", ".jpg", ".png", ".bmp", ".gif" };
        for (int i = 0; i < arr.length; i++) {
            temp = str.endsWith(arr[i]);
            if (temp) {
                break;
            }
        }
        return temp;
    }
 类似资料:
  • 问题内容: 我正在尝试创建一个Rotatable ImageView,我将向其指定特定角度和枢轴点,并查看其围绕该枢轴点旋转。我尝试过这样的事情: 但是postRotate方法的参数(第二个和第三个-枢轴点)完全没有变化。即使它们是0、0,也一样。 所以我想创建一个ImageView,在初始化时将旋转一定角度。在此示例中为45度。我试图设置范围和人员..没有帮助。 我怎么做?:/ 问题答案: 您可

  • 我正在构建一个应用程序,它依赖于显示从相机拍摄的许多位图图像。我希望所有图像都以90度(纵向)的方向显示,我知道如何使用每个图像提供的EXIF信息来实现这一点。在拍摄图像后立即旋转图像的位图以满足我的需要,然后将其发送到我的服务器,这对我来说是一个更好的主意,还是应该在不旋转图像的情况下将图像发送到我的服务器,然后每当我下拉图像时,使用图像附带的EXIF旋转来旋转我正在显示的图像视图?我需要一个高

  • 我有一个ImageView,可以用鼠标拖放,点击按钮旋转90度。这两件事在独立完成时都可以工作(因此可以旋转或移动ImageView,而不是两者都可以)。当我旋转ImageView并尝试移动它时,它似乎是随机移动的。 我使用以下方法旋转图像视图: 这导致了我所说的看似随机的运动。 我还尝试使用以下方法旋转ImageView: 位置是图像在屏幕上的位置。宽度和高度是ImageView的宽度和高度。

  • 所以我在图像视图上做了一些旋转和翻译。据我所知,图像视图并没有真正在任何一个位置之后,你必须在动画完成后将其实际移动到那里。所以我尝试移动的图像视图称为标记,它设置在其原始位置和有它的起始位置。移动或翻译后,我调用来处理移动或旋转。这似乎有一半的时间完成了预期的结果...不确定我做错了什么,但它与我想要的方式不一致。

  • 我正在开发一个Android应用程序,其中的一部分功能是用户可以从他们的设备中选择一个图像,将其与列表中的特定项目相关联,并在应用程序中使用它。我的目的是将图像本身存储在内存中,并将图像的路径与项目的其余存储信息一起存储在SQLite数据库中。 我已经能够让用户选择图像并上传,但图像有时会根据图片的拍摄方式进行旋转。我试着查看Exif数据,但方向总是为零。我曾尝试使用光标来查看信息,但也无济于事。

  • 问题内容: 我无法快速将图像旋转90度。我已经写了下面的代码,但是有一个错误并且无法编译 以下是我不确定的代码 问题答案: 这是针对 Swift 4.0 的扩展,可以仅旋转图像而无需。成功测试了图像已旋转,不仅更改了exif数据。 要执行180度旋转,您可以这样命名: 如果由于某种原因无法旋转,则将返回原始图像。