将图像转换为 pdf,然后再转换回图像格式:
$ convert in.jpeg out.pdf
$ convert out.pdf out.jpg
$ diff in.jpeg out.jpg
> Binary files in.jpeg and out.jpg differ
Run Code Online (Sandbox Code Playgroud)
尝试不同的实用程序,
$ gm convert in.jpeg out.pdf
$ pdfimages out.pdf -j orig
$ diff in.jpeg orig/out-100.jpg
> Binary files orig/out-000.jpg and in.jpg differ
Run Code Online (Sandbox Code Playgroud)
这些工具是否在幕后进行一些压缩,或者 PDF 就是这样工作的,即:它总是有损的?
图像元数据怎么样?是否可以将它们保存在 PDF 中?
PDF 是一种容器格式,而不是图像格式。因此,应该可以将图像嵌入到 PDF 中,然后将其提取,而无需重新压缩。但是,ImageMagickconvert
在创建 PDF 时确实会压缩图像,并且convert
from PDF 不会解析 PDF 文件,而只是拍摄其外观的快照,因此实际的重新压缩会发生两次。
您可以通过使用替代工具来避免这种情况。例如,img2pdf将图像按原样嵌入到 PDF 文档中,并且可以pdfimages
从poppler
(或poppler-utils
\xe2\x80\x94 包名称因操作系统和包管理器而异)提取嵌入图像。
$ img2pdf -o out.pdf in.jpeg\n$ pdfimages -all out.pdf out\n$ diff in.jpeg out-000.jpg\n$\n
Run Code Online (Sandbox Code Playgroud)\n