通过图片识别定位拍摄地点——微信小程序

原理——元数据

通过提取jpg格式图片中携带的元数据获得gps的信息,再通过调用地图openApi将经纬信息反解析为对应的实际地理位置。

测试小程序在这里

在这里插入图片描述

必备工具

1.微信小程序的云函数
2.腾讯地图open-api
3.nodejs 基础语法
4.exifreader nodejs moudle

背景

手机相机设置中,默认开了gps位置信息。这是一切的出发点,至于为什么会默认开启这里不是我们讨论的点。除了gps的信息以外,还有机型信息,以及如下信息 请查看文末的表格

识别成功前提

  • 你的图片必须是原图,使用手机的前置摄像头拍摄
  • 相机设置中必须开启gps 信息
  • 如果不是自己的图片,请确保对方在发送图片时勾选了原图选项

为了获得包含了gps元数组的图片的条件还是蛮苛刻的,例如在拍摄的过程中,gps定位未开启,或者gps信息弱,等情况此时就不会存在gps的信息,不过拍摄时间还是有的,所以可以确定拍摄图片时的手机时间。又或者使用了美拍,美图秀秀,b613…这些三方的摄像头,都不会携带元数据。如果未选择原图传送,经过聊天软件的压缩之后,原本携带的元数据也将丢失。所以别指望通过什么朋友圈图片得到地址信息。

核心代码

//使用npm install 安装 exifreader 模块
import ExifReader from 'exifreader'
//此处使用的腾讯地图的 sdk JavaScript版本,请自行到官网下载
import QQMapWX from 'qqmap-wx-jssdk.js'
const tags = ExifReader.load(filedata.fileContent, { expanded: true })
//经纬度
let GPSLatitude = tags.exif.GPSLatitude.description
let GPSLongitude = tags.exif.GPSLongitude.description

let local = qqmapsdk.reverseGeocoder({
      location: {
        latitude: GPSLatitude ,
        longitude: GPSLongitude 
      },
      coord_type: 1,
      success: (data) => {
      	//这里你将获得地址反解析的数据
      },
      fail: console.error,
      complete: console.log,
      sig: '签名'
    })

总结

只对技术评论:这个并不是什么黑科技。


更新

  • 2021年6月21日 新增map展示页面,新增一键复制源数据功能。
  • 2021年9月30日 微信云函数变更,目前功能已无法使用

附件

EXIF 标识

标识说明
ExifVersionExif 版本
FlashPixVersionFlashPix 版本
ColorSpace色域、色彩空间
PixelXDimension图像的有效宽度
PixelYDimension图像的有效高度
ComponentsConfiguration图像构造
CompressedBitsPerPixel压缩时每像素色彩位
MakerNote制造商设置的信息
UserComment用户评论
RelatedSoundFile关联的声音文件
DateTimeOriginal创建时间
DateTimeDigitized数字化创建时间
SubsecTime日期时间(秒)
SubsecTimeOriginal原始日期时间(秒)
SubsecTimeDigitized原始日期时间数字化(秒)
ExposureTime曝光时间
FNumber光圈值
ExposureProgram曝光程序
SpectralSensitivity光谱灵敏度
ISOSpeedRatings感光度
OECF光电转换功能
ShutterSpeedValue快门速度
ApertureValue镜头光圈
BrightnessValue亮度
ExposureBiasValue曝光补偿
MaxApertureValue最大光圈
SubjectDistance物距
MeteringMode测光方式
Lightsource光源
Flash闪光灯
SubjectArea主体区域
FocalLength焦距
FlashEnergy闪光灯强度
SpatialFrequencyResponse空间频率反应
FocalPlaneXResolution焦距平面X轴解析度
FocalPlaneYResolution焦距平面Y轴解析度
FocalPlaneResolutionUnit 焦距平面解析度单位
SubjectLocation主体位置
ExposureIndex曝光指数
SensingMethod图像传感器类型
FileSource源文件
SceneType场景类型(1 == 直接拍摄)
CFAPatternCFA 模式
CustomRendered自定义图像处理
ExposureMode曝光模式
WhiteBalance白平衡(1 == 自动,2 == 手动)
DigitalZoomRation数字变焦
FocalLengthIn35mmFilm35毫米胶片焦距
SceneCaptureType场景拍摄类型
GainControl场景控制
Contrast对比度
Saturation饱和度
Sharpness锐度
DeviceSettingDescription设备设定描述
SubjectDistanceRange主体距离范围
InteroperabilityIFDPointer
ImageUniqueID图像唯一ID

Tiff 相关

标识说明
ImageWidth图像宽度
ImageHeight图像高度
BitsPerSample比特采样率
Compression压缩方法
PhotometricInterpretation像素合成
Orientation拍摄方向
SamplesPerPixel像素数
PlanarConfiguration数据排列
YCbCrSubSampling色相抽样比率
YCbCrPositioning色相配置
XResolutionX方向分辨率
YResolutionY方向分辨率
ResolutionUnit分辨率单位
StripOffsets图像资料位置
RowsPerStrip每带行数
StripByteCounts每压缩带比特数
JPEGInterchangeFormatJPEG SOI 偏移量
JPEGInterchangeFormatLengthJPEG 比特数
TransferFunction转移功能
WhitePoint白点色度
PrimaryChromaticities主要色度
YCbCrCoefficients颜色空间转换矩阵系数
ReferenceBlackWhite黑白参照值
DateTime日期和时间
ImageDescription图像描述、来源
Make生产者
Model型号
Software软件
Artist作者
Copyright版权信息

GPS相关

标识说明
GPSVersionIDGPS 版本
GPSLatitudeRef南北纬
GPSLatitude纬度
GPSLongitudeRef东西经
GPSLongitude经度
GPSAltitudeRef海拔参照值
GPSAltitude海拔
GPSTimeStampGPS 时间戳
GPSSatellites测量的卫星
GPSStatus接收器状态
GPSMeasureMode测量模式
GPSDOP测量精度
GPSSpeedRef速度单位
GPSSpeedGPS 接收器速度
GPSTrackRef移动方位参照
GPSTrack移动方位
GPSImgDirectionRef图像方位参照
GPSImgDirection图像方位
GPSMapDatum地理测量资料
GPSDestLatitudeRef目标纬度参照
GPSDestLatitude目标纬度
GPSDestLongitudeRef目标经度参照
GPSDestLongitude目标经度
GPSDestBearingRef目标方位参照
GPSDestBearing目标方位
GPSDestDistanceRef目标距离参照
GPSDestDistance目标距离
GPSProcessingMethodGPS 处理方法名
GPSAreaInformationGPS 区功能变数名
GPSDateStampGPS 日期
GPSDifferentialGPS 修正
### 回答1: 微信小程序物资管理的logo应该体现出该小程序的主要功能和服务,具有简洁明了、易记易识的特点。建议采用浅蓝色为主色调,代表着物资管理的清晰和高效性。将“物资”两个字以粗体黑色字体呈现,紧紧贴合外框,突出物资管理的核心意义。在“物资”两个字上方,选择用图案来表达该小程序的主要目标——物资的管理与调配。选择一个由仓库、货架和牧羊犬三个元素组成的图案。仓库代表着物资的存储,货架代表着物资的分类和整理,牧羊犬则象征着物资管理者的聪明才智和勤勉工作。整个图案呈现流畅的线条和简洁的色彩,体现出该小程序管理物资的高效性和专业性,同时也让人感到舒适和可信赖。整个logo应该以文字为主,图案为辅,同时注重比例和整体平衡感,能够在小程序中的多种大小尺寸下清晰显示,方便用户快速识别和记忆。 ### 回答2: 微信小程序物资管理的logo应该体现出以下几个元素: 1. 实用性:由于这个小程序的主要功能是物资管理,因此logo应该注重实用性。可以考虑使用“物”、“库存”、“存储”等元素来展示物资管理的主要内容。 2. 易识别性:logo应该容易识别,让用户一眼就能看出这是一个物资管理的小程序。可以考虑使用简洁明了的图形或文字来实现这一点。 3. 色彩搭配:色彩搭配应该简洁大方,能够体现管理与秩序的感觉。可以选择深色系或浅色系进行搭配。 综上所述,微信小程序物资管理的logo可以使用一个简洁明了的图形来展示“物”、“库存”、“存储”等元素,颜色搭配以简洁大方的深色系或浅色系为主调,以实用性和易识别性为主要目的设计出一个让用户印象深刻的logo。 ### 回答3: 微信小程序物资管理是一款方便物资领用和归还的应用程序,其logo应该充分体现节约、高效和便捷特点。首先,logo应以绿色为基调,寓意物资的节约和环保。其次,设计中应包含仓库、货架或相关物品的图案,突出物资管理的主题。最后,为了凸显小程序的便捷性,可以在图案旁边添加简约的字母“M”,代表微信小程序。整体设计要简洁、明了,方便用户快速识别和使用。更进一步的表现可以搭配一些亮丽的色彩点缀,增加视觉冲击力,同时提升整个品牌形象,以便更广泛地吸引用户的关注和使用。综上所述,微信小程序物资管理logo的设计需要充分考虑品牌特点,突出图案的主题和便捷性,同时通过色彩搭配提升整体形象,从而引起用户的兴趣和信任,促进应用程序的发展和壮大。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值