如何将gps数据添加到图像,颤动image_picker Android

Posted

技术标签:

【中文标题】如何将gps数据添加到图像,颤动image_picker Android【英文标题】:how to add gps data to image, flutter image_picker Android 【发布时间】:2020-11-15 14:05:24 【问题描述】:

flutter image_picker 图像中没有添加 gps 数据

final pickedFile = await imagePicker.getImage(source: ImageSource.camera);
final bytes = await pickedFile.readAsBytes();
final tags = await readExifFromBytes(bytes);
print("Tags : $tags ");

标签:(无 Gps 数据)

Image ImageWidth: 4624, Image Model: Redmi Note 8 Pro, Image ImageLength: 3472, Image Orientation: Rotated 90 CW, Image DateTime: 2020:11:15 18:15:14, Image ExifOffset: 142, Image Make: Xiaomi, EXIF FNumber: 189/100, EXIF FocalLength: 543/100, EXIF ExposureTime: 50003/1000000, EXIF Flash: Flash did not fire, EXIF ISOSpeedRatings: 3750, EXIF ExifImageLength: 3472, EXIF ExifImageWidth: 4624, EXIF ApertureValue: 46/25, EXIF ShutterSpeedValue: -431/100, EXIF SubSecTime: 530

顺便说一句,拍照时(第一次)没有要求我允许位置,我需要添加任何权限吗?

【问题讨论】:

这是什么意思,你需要一个图片的位置。或点击图片时的唯一位置 需要照片的位置,默认相机应用拍摄的照片会添加位置数据到图像中。 @invariant,你能完成你的问题吗?你能发布你的解决方案吗? 【参考方案1】:
    如果您需要图像位置图库和相机, 请参阅此链接。

Is possible to get Image GPS location coordinates from the Image?

或者 如果这适合您,我也有一个客户选项。

    如果只需要在您的应用打开的相机图片图像时的位置,

使用简单的方法

File _image; 
final picker = ImagePicker();

 Future getImage() async  
final pickedFile = await picker.getImage(source: ImageSource.camera);

 setState(() 
 if (pickedFile != null) 

// your will take user location  at this time
 _image = File(pickedFile.path); 
    
 else  
    print('No image selected.');
    
 ); 

【讨论】:

感谢您的回复,可能是我的问题不清楚。使用图像选择器拍摄的照片没有将 gps 数据添加到图像中,请参阅上面的标签输出。通常当我们拍摄照片时,会显示一个对话框“你想允许定位吗”,这在我的手机上没有发生,但我在模拟器中运行时弹出了这个对话框。【参考方案2】:

这是我们用来添加 GPS 信息的:

      final picker = ImagePicker();

      picker.getImage(source: ImageSource.camera).then((pickedFile) async 
        var myImagePath = coreNotifier.myCurrentPath.absolute.path;

        final exif =
            dd.FlutterExif.fromBytes(await pickedFile!.readAsBytes());

        Position position = await _determinePosition();

        await exif.setLatLong(position.latitude, position.longitude);
        await exif.saveAttributes();

        final modifiedImage = await exif.imageData;
        var imageName = "imgName..";
        File imageFile = new File("$myImagePath/$imageName.jpg");
        imageFile.writeAsBytes(
          List.from(modifiedImage!),
        );
        coreNotifier.reload();
      );

也使用这个包:

import 'package:geolocator/geolocator.dart';
import 'package:flutter_exif_plugin/flutter_exif_plugin.dart' as dd;

【讨论】:

以上是关于如何将gps数据添加到图像,颤动image_picker Android的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从颤动的资产上传到firebase存储?

如何在颤动中回调谷歌位置服务对话框按钮点击?

无法在颤动中使用 dio 将图像上传到 api

如何将图像 URL 链接到另一个 URL 以在颤动中显示有关第一个 URL 的一些信息?

如何将标题卡添加到颤动卡

如何在颤动中设置背景图像?