华为使用h5上传图片没有gps信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为使用h5上传图片没有gps信息相关的知识,希望对你有一定的参考价值。

华为手机上传云上山东为什么不显示照片定位哪和经纬度?您好亲华为手机的照片显示地理位置的前提条件如下:拍摄带地理位置信息的照片,您需要在设置 > 安全和隐私 > 定位服务中,将平板的定位模式设置为使用 GPS、Wi-Fi 和移动网络。如果在室内,由于 GPS 信号不佳,需要平板连接 WLAN 或者打开移动数据进行网络定位。(由于网络定位技术的局限性,当您在室内使用网络定位时,获取的位置与实际位置可能会存在一些误差。)为手机的照片显示地理位置的操作步骤如下:1、打开相机,向左滑动屏幕,打开地理位置开关。2、打开图库,点击更多 > 设置 ,打开拍摄地点开关。3、使用相机拍照(由于定位需要一些时间才能完成,请稍等片刻再拍照)。完成拍照后,进入图库打开拍摄的照片,点击右上角的感叹图标,即可查看照片的详细信息,其中就包含了拍摄照片的地点信息。 参考技术A 华为手机上传云上山东为什么不显示照片定位哪和经纬度
灰灰Hh77
应答时长 10分钟
提问
咨询记录 · 回答于2022-09-23
华为手机上传云上山东为什么不显示照片定位哪和经纬度
您好亲华为手机的照片显示地理位置的前提条件如下:拍摄带地理位置信息的照片,您需要在设置 > 安全和隐私 > 定位服务中,将平板的定位模式设置为使用 GPS、Wi-Fi 和移动网络。如果在室内,由于 GPS 信号不佳,需要平板连接 WLAN 或者打开移动数据进行网络定位。(由于网络定位技术的局限性,当您在室内使用网络定位时,获取的位置与实际位置可能会存在一些误差。)为手机的照片显示地理位置的操作步骤如下:1、打开相机,向左滑动屏幕,打开地理位置开关。2、打开图库,点击更多 > 设置 ,打开拍摄地点开关。3、使用相机拍照(由于定位需要一些时间才能完成,请稍等片刻再拍照)。完成拍照后,进入图库打开拍摄的照片,点击右上角的感叹图标,即可查看照片的详细信息,其中就包含了拍摄照片的地点信息。希望可以帮到您哦
参考技术B 一般来说,这种情况,最常见于gps模块损坏了。
因为gps卫星信号还是很稳定的,不会有什么中断的情况。
如果自己会刷漆处理的话先刷下机看看,如果不是软件引起的,那么肯定就是GPS模块的事了。
参考技术C 建议您使用数据流量或WLAN,信号不好可能导致无法获取地理信息。 拍照的时候,通知栏会显示正在搜索 GPS 说明相机正在定位,您可以连续多拍几张照...

IIQ文件内gps信息的分析

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
近日有网友咨询,使用《vb.net 教程 5-7 Bitmap类 3 获得图片信息Exif 1》教程的代码可以打开IIQ文件,但是近期的IIQ图片却分析不了了。
网友还传了两张IIQ图片给我,使用系统(win10)自带的“照片”分别打开这两个文件,确实也是,一张能够看到gps信息,一张却看不到。
推测是IIQ文件结构有所变化。
网上找了一大圈,都没有IIQ文件相关资料,只获得了一些介绍性的信息。
我也根据网上的指引,下载了METADATAEXRACTOR组件生成程序进行分析,也不能获得gps相关信息。
最后只好自己查看IIQ文件十六进制内容了。使用WinHex打开文件,逐行查看,最后发现,gps信息在以<?xpacket begin......开始的数据里,再次分析发现,这段数据比较固定,一是大小固定,都是16759字节;二是都在文件末尾。


这样就很容易获得数据了。
按照《vb.net 教程 4-9 二进制文件读写 1》里面的内容进行读取二进制数据,然后转换为字符串就可以了。
具体代码如下:
 

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Dim xmpSign As Integer = 16759
        Dim xmpSize As Integer = 16364
        Dim xpackedHeader As String = "<?xpacket begin"

        Dim filepath As String = "G:\\save\\00067.IIQ"
        Dim fs As New FileStream(filepath, FileMode.Open, FileAccess.Read)

        Dim fileLenth As Long = fs.Length
        If fileLenth < xmpSign + 100 Then Exit Sub

        Dim bteXmp(xmpSize - 1) As Byte
        Dim pos As Long = fileLenth - xmpSign

        Try
            If fs.CanSeek Then
                Dim br As New BinaryReader(fs)
                fs.Seek(pos - 1, SeekOrigin.Begin)

                br.Read(bteXmp, 0, xmpSize)

                Dim tmpString As String
                tmpString = getString(bteXmp)

                If tmpString.Substring(0, 15) = xpackedHeader Then
                    TextBox1.Text = tmpString
                End If

                br.Close()
            End If
        Catch ex As Exception
            TextBox1.Text = "读取出错:" & ex.Message
        Finally

        fs.Close()
        End Try

    End Sub

    Private Function getString(ByVal buffer() As Byte) As String
        Return System.Text.Encoding.ASCII.GetString(buffer).Trim
    End Function

最后得到的数据如(由于某些原因,经纬度部分数字使用了?号代替):

<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' ?><x:xmpmeta  xmlns:x='adobe:ns:meta/' x:xmptk='Adobe XMP Core 5.2-c004 1.136881, 2010/06/10-18:11:35'>
<rdf:RDF  xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' ><rdf:Description rdf:about='' xmlns:exif='http://ns.adobe.com/exif/1.0/'>
<exif:GPSTimeStamp>02:41:32.700+00:00</exif:GPSTimeStamp><exif:GPSLatitude>?0,?6.?31898N</exif:GPSLatitude><exif:GPSLongitude>1?0,?0.?19800E</exif:GPSLongitude>
<exif:GPSAltitudeRef>0</exif:GPSAltitudeRef>
<exif:GPSAltitude>308070/1000</exif:GPSAltitude>
</rdf:Description><rdf:Description rdf:about='' xmlns:aerialgps='http://www.phaseone.com/aerialgps/'></rdf:Description></rdf:RDF></x:xmpmeta>

只需要进一步分析就可以从<exif:GPSLatitude>和<exif:GPSLongitude>这两段获得拍摄的经纬度。
同时通过对数据分析,里面应该是包含了Adobe公司的XMP标准的数据,用网上的查找XMP信息的代码也没有获取到xpacket的信息,比较遗憾。

 

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

以上是关于华为使用h5上传图片没有gps信息的主要内容,如果未能解决你的问题,请参考以下文章

h5 真机调试 上传图片 安卓机图片不显示问题

小程序/H5上传图片到阿里云上图片被旋转

H5拍照选择图片上传组件核心

H5调用本地相册/相机上传图片

解决小程序webview中无法上传图片问题

h5图片上传简易版(FileReader+FormData+ajax)