V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jaron0608
V2EX  ›  iPhone

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

  •  1
     
  •   Jaron0608 · 204 天前 · 5434 次点击
    这是一个创建于 204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    设备信息: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

    第 1 条附言  ·  204 天前
    看到有人收藏本帖,应该也是遇到类似问题,我将本帖获取到的一些信息整理了下发在了 Immich 的 issue ,可以关注~
    https://github.com/immich-app/immich/issues/8815
    4 条回复    2024-04-17 23:18:43 +08:00
    intinatsu
        1
    intinatsu  
       204 天前   ❤️ 2
    >> 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
        2
    revlis7  
       204 天前   ❤️ 1
    群晖的 Moments 也有类似的问题,用分享菜单中的保存图片,RAW 格式的文件最后会被转为 JPG ,只有直接选择 Moments 里的下载才能保存原始的 RAW 文件,感觉这是 iOS 分享功能默认的行为。
    Jaron0608
        3
    Jaron0608  
    OP
       204 天前
    @revlis7 @intinatsu 感谢二位信息~
    cwcauc
        4
    cwcauc  
       203 天前 via iPhone
    我保存到相册怎么是 9KB
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:12 · PVG 21:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.