凸然

flutter 如何正确显示旋转了的jpg图像文件

移动开发中有时候要显示拍照和网上下载的图片,这些图片如果是jpg格式的话或者其它的属于exif格式类型的图片文件时,会包含图片的方向信息。


flutter 在解码这类图片时并没有处理这种方向信息,也就是说使用图片查看器显示图片是横的,但在flutter中显示确是竖的。

这种问题在拍照图片相关功能中经常会出现。


要解决这个问题,第一步就是需要获取exif中的图片方向信息。

要读取这种exif格式中的方向信息,可以开发插件在原生层获取方向信息然后返回给flutter层,这么做实现倒是可以实现,牵扯的东西太多,尤其对跨平台不友好,最好的方式就是使用一个dart实现的开源库。


经过一番搜索和对比,选择了一个比较好的开源库 image

获取图片的方向信息后,下面就是根据方向信息旋转图片然后保存为新的jpg图片。这样在后面的使用和显示、处理、分享和保存等等中就不会存在图片方向不对的问题了。


完整代码如下:

import 'package:image/image.dart' as img;
...

final img.Image capturedImage = img.decodeImage(await File(path).readAsBytes());
final img.Image orientedImage = img.bakeOrientation(capturedImage);
await File(path).writeAsBytes(img.encodeJpg(orientedImage));

//非常简单,有效,有木有,有木有。这个库太强大了。




版权声明:本文为凸然网站的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:flutter 如何正确显示旋转了的jpg图像文件