V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ko20
V2EX  ›  问与答

有没有一种图片压缩服务能够保留照片的 exif 信息?包含相机制造商,镜头焦距,光圈快门 ISO 这些值

  •  
  •   ko20 · Jul 15, 2024 · 2225 views
    This topic created in 651 days ago, the information mentioned may be changed or developed.

    最近拍照片比较多,发博客和小红书等,需要压缩一下照片。压缩之后保存到自己的 immich 服务当中,浏览照片时镜头相机拍摄参数等信息没了。

    我一直在用 squoosh 在线压缩或者使用命令行批量压缩,但是压缩后丢失了镜头相机等元数据。看了一下 squoosh 官方的某个 issue ,应该不会做这个功能了

    试了一下 tinypng.com ,在线使用会完全抹掉这些信息。也试了一下 api,

    保留元数据.jpg

    只会保留拍摄时间,相机和镜头相关信息没了……

    有没有一种图片压缩服务,能够保留照片的 exif 镜头相机信息?

    Supplement 1  ·  Jul 15, 2024

    感谢大家提意见。已经用 exiftool 搞定了(这么好用的的东西现在才知道!

    我是在一个 alpine 容器里操作的。以前写过这篇文章 [可能是]最好的压缩图片程序,使用 squoosh-cli 批量压缩图片 https://hellodk.cn/post/1141

    使用 alpine 安装 exiftoolapk add exiftool

    squoosh-cli 批量压缩

    squoosh-cli --mozjpeg '{"quality":60,"baseline":false,"arithmetic":false,"progressive":true,"optimize_coding":true,"smoothing":0,"color_space":3,"quant_table":3,"trellis_multipass":false,"trellis_opt_zero":false,"trellis_opt_table":false,"trellis_loops":1,"auto_subsample":true,"chroma_subsample":2,"separate_chroma_quality":false,"chroma_quality":75}' \
    -d output \
    -s -dk-compressed \
    *.jpg
    

    再调用一个 shell 脚本即可将原本文件的 exif info 写入 squoosh 压缩后的文件当中。squoosh压缩后文件占用 163KB,写入 exif 信息之后文件占用变成 172KB,可以接受。

    shell 内容如下

    #!/bin/sh
    
    # 检查是否提供了必要的参数
    if [ -z "$1" ] || [ -z "$2" ]; then
        echo "Usage: $0 <input_dir> <output_dir>"
        exit 1
    fi
    
    # 从命令行参数中读取输入目录和输出目录
    input_dir="$1"
    output_dir="$2"
    
    # 检查输入目录是否存在
    if [ ! -d "$input_dir" ]; then
        echo "Input directory '$input_dir' does not exist."
        exit 1
    fi
    
    # 检查输出目录是否存在
    if [ ! -d "$output_dir" ]; then
        echo "Output directory '$output_dir' does not exist, creating it."
        exit 1
    fi
    
    # 定义原始图片目录和输出目录
    input_dir="."
    output_dir="./output"
    
    # 遍历所有 JPG 文件
    for input_file in "$input_dir"/*.jpg; do
        # 提取文件名,不带路径
        filename=$(basename "$input_file")
        
        # 构建目标文件路径
        output_file="${output_dir}/${filename%.jpg}-dk-compressed.jpg"
    
        # 检查压缩后的文件是否存在,以防万一
        if [ ! -f "$output_file" ]; then
            echo "File $output_file does not exist, skipping..."
            continue
        fi
    
        # 复制 EXIF 元数据
        exiftool -TagsFromFile "$input_file" -all:all "$output_file"
        
        # 删除生成的备份文件(-TagsFromFile 操作会创建一个备份文件)
        rm "${output_file}_original"
    done
    
    
    13 replies    2024-07-16 10:45:42 +08:00
    flyxq
        1
    flyxq  
       Jul 15, 2024
    这玩意不是 ai 问一下就知道了吗。Python 中的 PIL 库( Pillow )
    tool2dx
        3
    tool2dx  
       Jul 15, 2024
    你都用命令行压缩了,就是加一行代码的事情,exiftool -TagsFromFile source.jpg -all:all target.jpg
    ko20
        4
    ko20  
    OP
       Jul 15, 2024
    @flyxq #1 谢谢。不太了解 python 的库
    ko20
        5
    ko20  
    OP
       Jul 15, 2024
    @tool2dx #3 命令行是用的 squoosh-cli 。可以,感谢你提供的工具
    NoOneNoBody
        6
    NoOneNoBody  
       Jul 15, 2024
    exiftool 赛高
    tomczhen
        7
    tomczhen  
       Jul 15, 2024
    xnview 应该可以
    conky
        8
    conky  
       Jul 15, 2024
    synology photo 会提供压缩的 jpg ,保留了这些信息
    jasonlu233
        9
    jasonlu233  
       Jul 15, 2024
    libvips
    ko20
        10
    ko20  
    OP
       Jul 15, 2024
    谢谢大家,已经用 exiftool 搞定了,太强了。详情见附言
    ko20
        11
    ko20  
    OP
       Jul 15, 2024
    @tomczhen #7 在一个 stackoverflow/reddit 帖子上似乎也看到了说使用 xnview
    chen1210
        12
    chen1210  
       Jul 15, 2024
    Adobe Lightroom
    ko20
        13
    ko20  
    OP
       Jul 16, 2024
    直接通过压缩得到保留 exif 元数据图片的压缩服务,今天发现下面这个网站可以

    - GitHub https://github.com/Lymphatus/caesium-image-compressor
    - 在线尝试 https://caesium.app/

    ---

    当然我现在的工作流是更适合我自己的。squoosh 压缩有比较大的自定义权限。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1275 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 23:38 · PVG 07:38 · LAX 16:38 · JFK 19:38
    ♥ Do have faith in what you're doing.