求解惑!最近在 ios 上发现一个 jpg 图片特有的问题

34 天前
 Jaron0608

设备信息:15 pro, ios 17.4.1

背景:最近在 Immich app 中下载 nas 中图片的时候,发现只要是 jpg 格式的图片在下载完后,server 端会出现两个看上去一样的图,比对后发现是图片的二进制数据大小不一致,导致 hash 不一样,从而被服务端判断为两张图片了。试了下 PNG 、HEIC 格式都没有这个问题。

排查:上传、下载了多组 JPG 图后发现,从手机下载的图总是会比原本上传的图要大,并且这个问题不止局限在 Immich ,例如我从浏览器打开下面这个 693 个字节大小的图片

做以下三种操作对应的表现:

  1. 直接保存到「文件」,保存下来的图就是 693 个 byte
  2. 直接保存到「相册」中,「相册」中图有 3kb
  3. 从「文件」中点击分享按钮,选择存储图像,「相册」中的图有 17kb (这个大小和通过 immich 保存下来的大小一致)

初步怀疑是「相册」这个 app 在系统层的图片写入有一些 jpg 图片的重编码逻辑,然后 immich 存图的逻辑与上面第 3 点一致,导致的这个问题

求助:

  1. 这个问题在各位手机上是否能够复现
  2. 如果是已有问题,有无 ios 客户端大佬从技术层面解释一下

因为问题起于 Immich ,本人非常喜欢的一个图片管理工具,也提了issue,奈何英语水平有限沟通效率比较低,希望在这能找到一些线索,进而能够让官方解决掉这个 bug

1996 次点击
所在节点    iPhone
4 条回复
intinatsu
34 天前
>> 1. 直接保存到「文件」,保存下来的图就是 693 个 byte
>> 3. 从「文件」中点击分享按钮,选择存储图像,「相册」中的图有 17kb

以 OP 贴出来这张图为例,在 iOS 上可以复现,就是 17kb 。
可以通过 exiftool 查看 jpg 文件数据,有一项:
Thumbnail Image: (Binary data 16004 bytes, use -b option to extract)
也就是说这张 17kb 的图像中包含了 16kb 的缩略图,剩下多出来的数据应该包括新添加的一些 EXIF 信息。
revlis7
33 天前
群晖的 Moments 也有类似的问题,用分享菜单中的保存图片,RAW 格式的文件最后会被转为 JPG ,只有直接选择 Moments 里的下载才能保存原始的 RAW 文件,感觉这是 iOS 分享功能默认的行为。
Jaron0608
33 天前
@revlis7 @intinatsu 感谢二位信息~
cwcauc
33 天前
我保存到相册怎么是 9KB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX