批量处理tif图像?将.tif转换为.jpeg。

我正在尝试批量转换一些.tif文件。我发现phatch可能是一个不错的选择,但我使用的是Ubuntu 11.04。看起来他们没有适用于我的版本的.deb文件。
有人有任何替代phatch的方法或者其他快速批量转换tif到jpeg文件的建议吗?
我正在寻找一个非Photoshop(比如Wine)的解决方案。
8个回答

简单。安装 imagemagick:
sudo apt install imagemagick

最简单的用法是:
convert File.tif File.jpg

它很聪明,会根据你的文件扩展名进行操作。

现在,为了进行批量转换,我们将使用一个循环。

cd进入存放你的tif文件的目录。

然后:

for f in *.tif; do  echo "Converting $f"; convert "$f"  "$(basename "$f" .tif).jpg"; done

也可阅读为:

for f in *.tif
do  
    echo "Converting $f" 
    convert "$f"  "$(basename "$f" .tif).jpg" 
done

应该就这样了!

另外,一旦你转换所有文件并验证新的jpg文件的完整性,只需在该目录中运行rm *.tif来删除所有旧的.tif文件。但要小心星号,不要在*后面加上空格,否则将删除目录中的所有文件。

提示:如果你有一个包含这些图像的子文件夹的文件夹,你可以使用以下for循环来查找该文件夹中的所有.TIF文件:

for f in $(find -name *.tif); do ...; done

这个应该打印 Converting filename.tif 还是 Converting filename - sodiumnitrate
1@sodiumnitrate它会显示“正在转换文件名.tif”。basename命令需要2个参数,例如basename file.tif .tif将返回“file”,去除了.tif扩展名。如果你愿意,你可以修改循环,用相同的basename命令来显示“将文件名.tif转换为文件名.jpg”。 - Matt
find的第一个参数应该是路径,所以最后一行应该是for f in $(find . -name *.tif); do ...; done(因为我们在之前使用了cd进入目录)。我尝试编辑@Matt的回答,但由于某种原因,编辑必须至少有6个字符。 - mrtnmgs
当我运行那段代码时,我收到了以下警告信息:
convert-im6.q16: "GainControl" 的数据类型错误,标签被忽略。`TIFFReadCustomDirectory' @ warning/tiff.c/TIFFWarnings/985.
- Raleigh L.

我在自己尝试做的时候找到了这个问题;以后参考,你也可以像这样做:
convert *.tiff -set filename: "%t" %[filename:].jpg

或者将其放在一个子目录中。
mkdir jpg
convert *.tiff -set filename: "%t" jpg/%[filename:].jpg

2内置文件名处理太棒了! - beerbajay
这对于我的PNG文件非常有效。但是,PDF文件的行为却不同。 - wdkrnls
我很想看到这个工作,然而,在Ubuntu 64上,ImageMagick 6.6.9-7 2014-03-06 Q16(OpenMP)报告了一个总线错误。接受的答案运行良好。 - TFuto
警告:这个问题使得整个系统(GNOME 3)冻结,我不得不强制关闭计算机。 - 0__
对于大量的文件,这会导致内存问题。我将我的文件分成几批来处理。 - abhaga

使用 ImageMagick 内置的批处理工具 mogrify
mogrify -format jpg *.tif

如果你没有安装ImageMagick的话:
sudo apt-get install imagemagick

我想附加在@Matt的答案中,如果你希望将文件保存在子文件夹中,可以按照以下步骤操作:
find . -iname *.tif | while read f; do echo "Converting ${f}"; convert "${f}" "${f%.*}.jpg"; done

这也解决了如果你的文件路径/名称中有空格的问题。

Imagemagick 应该能够将它们转换。这是一个命令行程序包,如果你对此没有意见的话。

其中一部分是convert -

man convert:

convert - 在图像格式之间进行转换,以及调整图像大小、模糊、裁剪、去斑点、抖动、绘制、翻转、合并、重新采样等等。


如果你喜欢图形界面的应用程序,你可以通过正常的软件源安装Phatch。只需打开Ubuntu软件中心并搜索它。我现在不再使用11.04了,但当时我已经安装了它。

使用批处理插件的GIMP GUI解决方案

在Ubuntu 18.04上使用GIMP 2.8工作

批处理器输入对话框窗口

David's Batch Processor input dialog window

批处理器输出对话框窗口

Batch Processor Output Dialog Window

安装说明

  1. DBP - David's Batch Processor官网下载当前插件文件到您的桌面上。对于运行Gimp 2.8的Ubuntu 18.04,适用于我的文件是dbpSrc-1-1-9.tgz

  2. 获取一些GIMP开发文件:

    sudo apt-get install libgimp2.0-dev gcc cpp g++
    
  3. 切换到系统源代码目录:

    cd /usr/src/
    
  4. 将插件从桌面提取到自己的源代码目录中。用您当前的用户名替换[username],并使用在步骤1中下载的文件名:

    sudo tar -xvzf /home/[username]/Desktop/dbpSrc-1-1-9.tgz
    
  5. 切换到插件的源代码目录:

    cd dbp-1.1.9
    
  6. 编译插件:

    make
    
  7. 安装插件:

    sudo make install
    
  8. 启动GIMP,您将在菜单 > 滤镜 > 批处理下找到插件

    GIMP Batch Process.. Menu Path


上面的答案使用*.tif来选择tif文件,但是如果你的当前工作目录中有太多文件,这样做会返回一个错误。一个简单的解决办法是使用一个Python脚本来转换当前工作目录中的每个文件:
import glob, os

for c, i in enumerate(glob.glob('ecco_images/*')):
  print(' * converting', i)
  os.system('convert ' + i + ' ' + i.replace('.TIF','.jpg'))

for f in *.tif 不会出错,但 convert *.tif 会出错。 - muru
啊,谢谢 @muru!我原本以为 * 扩展在操作系统层面上是一样的,但很高兴被纠正。 - duhaime