imagemagick - 有没有办法从 tiff 图像中识别和删除缩略图?
问题描述
我们有一个使用 Adobe Illustrator 裁剪 pdf 图像的过程。在此过程中,缩略图元数据被添加到图像中。稍后我们将图像转换为 eps。到那时为止,图像看起来还不错。然后我们使用 ImageMagick 将图像转换为 tiff。在此阶段,缩略图将附加到原始图像的左上角。有没有办法删除这个缩略图?
解决方案
有许多可能性,具体取决于实际发生的情况,如果不查看每个阶段的输入和输出文件以及实际处理,很难判断。
有时缩略图是 TIFF 中的第一个条目,因此您可以选择仅从 TIFF 中的第二个条目(从零开始计数)开始加载:
magick input.tif[1--1] ...
如果您无法避免加载第一个/最后一个条目,则可以加载所有内容并删除之后不需要的任何内容。所以,如果我检查这样的图像,我会看到它有 6 个场景,即。0 到 5:
magick identify image.tif
image.tif[0] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 283124B 0.000u 0:00.000
image.tif[1] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 0.010u 0:00.000
image.tif[2] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 0.010u 0:00.000
image.tif[3] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 0.010u 0:00.000
image.tif[4] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 0.010u 0:00.000
image.tif[5] TIFF 2448x3168 2448x3168+0+0 1-bit Bilevel Gray 0.010u 0:00.000
如果我想删除第一个和最后一个条目,在处理剩余条目之前,我可以这样做:
magick image.tif -delete 0,-1 -format "Processing scene: %s Resolution: %G\n" -write info: <FURTHER PROCESSING OF EACH PAGE> result-%d.png
样本输出
magick image.tif -delete 0,-1 -format "Processing scene: %s Resolution: %G\n" -write info: -crop 10x10+0+0 result-%d.png
Processing scene: 1 Resolution: 2448x3168
Processing scene: 2 Resolution: 2448x3168
Processing scene: 3 Resolution: 2448x3168
Processing scene: 4 Resolution: 2448x3168
您可以通过检查您的图像来确定是否是这种情况:
exiftool YOURIMAGE
并寻找“子文件类型:多页图像的单页”tiffinfo YOURIMAGE
并寻找条目数magick identify YOUIRIMAGE
并寻找不止一行的输出
有时缩略图在元数据中,因此您可以尝试使用以下方法之一剥离这些缩略图:
magick INPUT.JPG -strip RESULT.JPG
jhead -dt YOURIMAGE
exiftool -thumbnailimage= YOURIMAGE
您还可以通过以下方式找到这些:
exiftool YOURIMAGE
并寻找嵌入的二进制数据magick identify -verbose YOURIMAGE
jhead YOURIMAGE
推荐阅读
- java - 为什么插入查询会导致我的数据流管道停止处理数据库插入?
- git - 如何将特定文件从一个 git repo 复制到另一个,保留历史记录
- python - 如何使用 Matplotlib 绘制 Shapely 多边形和对象?
- r - R循环回归特别
- python - 简单查询导致 Django 中的内存泄漏
- yii2 - Yii2 UrlManager 周期中断
- api - 如何使用 RestAssured 测试无效的编码 REST 响应
- python - 如何应用 FFT 来查找信号的频率?
- python - Python字符串比较给出了意外的输出
- javascript - 对 React PrivateRoute 语法感到困惑 {}