【问题标题】:How to detect if an image is vertical or horizontal [closed]如何检测图像是垂直还是水平[关闭]
【发布时间】:2021-08-08 09:08:28
【问题描述】:

我正在 Flutter 中制作一个应用程序,我在其中使用 image_picker,我想知道如何知道图像的方向,如果图像是垂直的还是水平的。

有什么办法吗?

【问题讨论】:

    标签: android ios image flutter


    【解决方案1】:

    读取图像文件方向的正确方法是读取其元数据。 每当创建任何图像文件时,它也会创建 Exif 文件(或元数据文件)。此 EXIF 文件包含图像的所有属性,如方向、宽度、高度等。

    使用 readAsBytes 函数将为您提供 EXIF 元数据。

    图像的方向取决于您握持相机的方式。如果您是通过将相机倒置拍摄的,那么您的图像将具有垂直方向,但图像内容将是倒置的。

    图像总共支持 8 个方向。你可以在这里读更多关于它的内容 https://sirv.com/help/articles/rotate-photos-to-be-upright/

    但是,如果您只想查找方向,则可以使用 EXIF 文件使用 readAsBytes 函数找到它并访问方向属性。

    【讨论】:

      【解决方案2】:

      decodeImageFromList() 为我们提供图像的高度和宽度,根据大小我们可以决定给定图像是垂直的还是水平的。

          import 'dart:io';
      
          final picker = ImagePicker();
          final pickedFile = await picker.getImage(source: ImageSource.camera);
      
          File image = new File(pickedFile.path); 
          var decodedImage = await decodeImageFromList(image.readAsBytesSync());
          bool isHorizontalImage = decodedImage.width > decodedImage.height;
      

      【讨论】:

        【解决方案3】:

        从选择器中获取文件后,转换为图像并获取宽度和高度,计算比率然后获取方向:

        image = Image.memory(await pickedFile.readAsBytes())
        

        【讨论】:

        • bool isLandscapeImage = image.width > image.height;
        猜你喜欢
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        • 2022-08-17
        • 2020-09-27
        • 1970-01-01
        相关资源
        最近更新 更多