图片信息怎么查?EXIF、像素指纹、语义搜索三层拆解,附exiftool命令

关键词:图片信息,EXIF查看,图片元数据,反向搜图,图片去重

摘要:别再右键属性了。用一个业余修图视角,把图片信息拆成容器层、像素层、语义层,附exiftool、imagehash、Tesseract具体命令和参数,解决查原图、查隐私、查盗图的问题。

我最早查图片信息,就是右键看属性,或者拖进 Photoshop 看图像大小。 后来帮朋友找一张被盗的探店图,微信保存版只有 86 kB,exiftool 只吐出 JFIF Version 1.01、Encoding Process Baseline DCT、ICC_Profile,拍摄时间、GPS、机型全空。 那一刻我才意识到:图片信息不是一层,至少是三层——容器层、像素层、语义层。 只看 EXIF,就像只看快递面单;面单可以撕掉,也可以伪造,但箱子里的东西、胶带折痕、重量还在。

图片

第一层:容器层,EXIF 不是唯一

容器层包含文件头、元数据、色彩描述。 JPEG 看 APP1 段里的 EXIF,常见字段有 Make、Model、LensModel、FNumber、ExposureTime、ISO、DateTimeOriginal、GPSLatitudeRef、GPSLongitude,EXIF 段最大约 64KB。 PNG 看 tEXt、iTXt、zTXt chunk,IHDR 固定 13 字节,宽高各占 4 字节。 WebP 是 RIFF 容器,VP8X chunk 里的 flag 决定有没有 alpha、EXIF、XMP。 HEIC 是 ISO BMFF box,重点看 meta、iprp、iloc,很多手机默认拍 HEIC,传电脑后属性会变。

图片

工具对比我自己的用法: exiftool -a -G1 -s image.jpg 读得最全,连镜头序列号都能挖,但批量慢;exiv2 -pa image.jpg 快,适合脚本;identify -verbose image.jpg 看像素尺寸、色彩空间、深度更直观;ffprobe -show_format -show_streams image.jpg 对视频封面、HEIC 有时更稳。 安装:Ubuntu 跑 sudo apt install libimage-exiftool-perl;Windows 下载 exiftool.exe,改名 exiftool.exe 放进 PATH。 步骤:先 exiftool -DateTimeOriginal -GPSLatitude -GPSLongitude -Model -LensModel *.jpg,再 exiftool -all= -overwrite_original image.jpg 清隐私。 注意:EXIF 可写,exiftool -Model='iPhone 15 Pro' 这种命令就能改,所以别把 EXIF 当法庭证据。

第二层:像素层,EXIF 删了也藏不住

平台重编码会清 EXIF,但像素会留下压缩痕迹。 JPEG 按 8×8 块做 DCT,不同相机、不同软件的量化表不一样,截图、微信、微博、小红书各有自己的“口味”。 我常用感知哈希 pHash:pip install imagehash,然后 from PIL import Image; import imagehash; phash = imagehash.phash(Image.open('a.jpg')),得到 64 位指纹。 汉明距离 ≤5 通常同图,≥10 基本不同;MD5 和 SHA256 只能查完全一样,改一个像素就全变。 另一个办法是 ImageMagick:compare -metric RMSE a.jpg b.jpg diff.png,RMSE 0.02 以内很像,0.05 以上要谨慎。

图片

去年十一月我帮朋友追一张 3024×4032 的原图,下载版是 1080×1440,MD5 完全不同,pHash 距离 4,SSIM 0.91。 这说明:找原图、去重、查盗图,优先用 pHash + SSIM;版权取证再回到原文件 SHA256。 额外参数:用 exiftool -b -ThumbnailImage image.jpg > thumb.jpg 能导出内嵌缩略图,有时缩略图没被裁,能看到原图边缘。 但别过度神化:pHash 也会碰撞,尤其是纯色图、文字截图、表情包。

图片

第三层:语义层,搜图引擎各有脾气

现在查图片信息,不只查元数据,还要查“图里是什么”。 Google Lens 适合找同款商品、景点、植物;TinEye 适合找最早出现,2017 年之前的图有时能挖到;Yandex 对人脸、场景、相似构图更狠;Baidu 识图对中文互联网、表情包、国内电商更全。 我自己的顺序:先 TinEye 看最早时间,再 Google Lens 看主体,再 Yandex 看相似构图,最后百度看中文来源。 语义向量也能量化:CLIP 输出 512 或 768 维,余弦相似度 >0.85 通常同语义,>0.92 很可能同主体。 OCR 方面,Tesseract 5 对清晰截图中文一般,PaddleOCR 对表格、竖排更好;命令是 tesseract image.png stdout -l chi_sim+eng。

图片

搜图时别只传一张原图。 裁主体、调亮度、镜像翻转、加 10% 白边,各试一次,命中率经常差一倍。 隐私提醒:上传前跑 exiftool -all= -overwrite_original image.jpg,但清元数据不等于去水印、去人脸、去背景。 如果图里有身份证、合同、门牌,先打码,再考虑要不要传。

我的独立观点:三层交叉,别做单层侦探

容器层告诉你“谁写的”,像素层告诉你“是不是同一张”,语义层告诉你“像什么”。 三者交叉才有意义:EXIF 时间 + GPS 可以定位,pHash 可以追传播链,语义搜索可以找上下文。 常见误区有四个:一是只看属性就说原图,其实微信、微博、小红书都会重编码;二是拿 Photoshop 改的 EXIF 当证据;三是把 pHash 当加密哈希,它碰撞率不低;四是用在线网站传身份证、合同,服务器可能留存。 我的建议:本地优先,exiftool + imagehash + Tesseract 三件套;真要搜图,先清隐私再传。 批量处理可以写:for f in *.jpg; do exiftool -Model -DateTimeOriginal -GPSPosition "$f"; done。

图片

最后说句不讨喜的:你搜“图片信息怎么查”,先问自己要查什么。 查拍摄设备,看容器层;查是否原图,看像素层;查盗图来源,看语义层;查隐私泄露,三层都要看。 目标不同,工具顺序完全不同。 别指望一个网站、一个右键属性解决所有问题。

标签: