如何解决无法在Flutter中获得图像的真实exif数据
我的抖动有一个严重的图像方向问题。使用相机包装时,当我从上到下拍摄照片时,保存文件后图像方向错误。因此,我尝试手动调整正确的方向。为此,我使用exif数据作为辅助工具。
这是我的职能:
Future<void> _fixOrientationAndSavePicture(filePath) async {
List<int> fpBytes = File(filePath).readAsBytesSync();
image.Image pictureData = image.decodeImage(fpBytes);
var imageExif =
await readExifFromBytes(await new File(filePath).readAsBytes());
var foundOrientation;
var exifWidth;
var exifHeight;
if (imageExif.isNotEmpty) {
foundOrientation = imageExif['Image Orientation'].values[0];
exifWidth = imageExif['EXIF ExifImageWidth'].values[0];
exifHeight = imageExif['EXIF ExifImageLength'].values[0];
}
print(foundOrientation);
print("Image Width: " +
pictureData.width.toString() +
" - Image Height: " +
pictureData.height.toString());
print("Exif Width: " +
exifWidth.toString() +
" - Exif Height: " +
exifHeight.toString());
print("Exif Data:");
print(imageExif);
// Flat from top to bottom
if (foundOrientation == 8) {
image.Image rotatedImage = image.copyRotate(pictureData,180);
File(filePath).writeAsBytesSync(image.encodeJpg(rotatedImage));
}
// Bent to the left
if (foundOrientation == 1) {
image.Image rotatedImage = image.copyRotate(pictureData,90);
File(filePath).writeAsBytesSync(image.encodeJpg(rotatedImage));
}
// Bent to right
if (foundOrientation == 3) {
image.Image rotatedImage = image.copyRotate(pictureData,-90);
File(filePath).writeAsBytesSync(image.encodeJpg(rotatedImage));
}
}
这是控制台输出:
在真实风景模式下拍照时输出
flutter: 1
flutter: Image Width: 4224 - Image Height: 2376
flutter: Exif Width: 4224 - Exif Height: 2376
flutter: Exif Data:
flutter: {Image Orientation: Horizontal (normal),Image ExifOffset: 38,EXIF ColorSpace: sRGB,EXIF ExifImageWidth: 4224,EXIF ExifImageLength: 2376}
我以人像模式拍照时输出,但将智能手机向左弯曲10度
flutter: 1
flutter: Image Width: 4224 - Image Height: 2376
flutter: Exif Width: 4224 - Exif Height: 2376
flutter: Exif Data:
flutter: {Image Orientation: Horizontal (normal),EXIF ExifImageLength: 2376}
正如您所看到的,这是完全相同的输出...。但是在第二个图像中,我不是用风景拍照。我将智能手机保持为纵向模式,并将其向左倾斜几度。
问题:如果这两种情况之间没有区别,我将无法调整图像的方向...。
您有解决此问题的想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。