#jpeg #raw #extract #camera

应用 rawtojpg

从 RAW 文件中提取嵌入的 JPEG 的非常快速的嵌入式提取器

8 个版本

0.5.3 2024 年 6 月 21 日
0.5.2 2024 年 5 月 25 日
0.4.0 2024 年 5 月 14 日
0.3.2 2024 年 5 月 9 日

#223命令行工具

Download history 364/week @ 2024-05-09 102/week @ 2024-05-16 332/week @ 2024-05-23 36/week @ 2024-05-30 4/week @ 2024-06-06 180/week @ 2024-06-20 1/week @ 2024-06-27

614 每月下载次数

MIT 许可证

13KB
186 代码行

rawtojpg

rawtojpg 提供了一种比 exiftool 的 -JpgFromRaw 更快的方法来从 RAW 文件中提取嵌入的 JPEG。在一个包含 4000 个文件的目录中,rawtojpg 比 exiftool 快约 15 倍提取 JPEG。

% rm -rf ~/rtj && mkdir -p ~/rtj/{rawtojpg, exiftool}
% sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
% \time -v rawtojpg /mnt/sdcard/DCIM/101MSDCF ~/rtj/rawtojpg >/dev/null
    User time (seconds): 2.18
    System time (seconds): 20.99
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:29.72
    File system inputs: 22956551
    File system outputs: 22855504


% sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
% \time -v exiftool -b -JpgFromRaw -ext arw -r /mnt/sdcard/DCIM/101MSDCF -w ~/rtj/exiftool/%f.jpg >/dev/null
    User time (seconds): 113.21
    System time (seconds): 58.15
    Elapsed (wall clock) time (h:mm:ss or m:ss): 7:52.87
    File system inputs: 316175244
    File system outputs: 22864400

输出 JPEG 文件的总大小为 11.5GiB,因此从吞吐量的角度来看,rawtojpg 约为 386MiB/s,而 exiftool 约为 24MiB/s。

rawtojpg 比如此之快的关键原因是它非常小心地避免了过度读取整个 RAW 文件。exiftool 不这样做,因此(有用的)吞吐量相当大。这是通过明智地使用 madvise 实现的。

除此之外,rawtojpg 还可以同时处理多个文件,这在像 CFexpress 卡这样的快速设备上非常有帮助。

依赖关系

~5–14MB
~149K SLoC