Processamento em lote de imagens tif? Convertendo .tif para .jpeg

41

Estou tentando converter em massa um punhado de .tifarquivos. Eu descobri que o phatch pode parecer um bom candidato, mas estou executando o Ubuntu 11.04. Parece que eles não têm um .debpara a minha versão.

Alguém tem alguma alternativa para phatch ou quaisquer outras recomendações para converter rapidamente em lote tifem jpegarquivos.

Estou procurando uma solução que não seja do Photoshop (ala Wine).

chrisjlee
fonte

Respostas:

75

Fácil. Instale o imagemagick :

sudo apt-get install imagemagick

Seu uso mais simples é:

convert File.tif File.jpg

É inteligente e segue a sua extensão de arquivo.

Agora, para fazer conversões em lote, usaremos um loop.

CD no diretório onde estão seus arquivos tif.

então:

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

Leia também como:

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

Isso deve resolver!

Além disso, depois de converter todos os arquivos e verificar a integridade do novo jpg, execute rm *.tifesse diretório para excluir todos os arquivos .tif antigos. Tenha cuidado com asteriscos, no entanto, não adicione um espaço após o *, ou você excluirá todos os seus arquivos no diretório.

Dica: Se você possui uma pasta com subpastas que contém essas imagens. Você pode usar isso para o loop para encontrar todos os arquivos .TIF nessa pasta:

for f in $(find -name *.tif); do ...; done
Matt
fonte
Isso deveria imprimir Converting filename.tifou Converting filename?
nitrato de sódio
1
@snitrato de sódio, ele dirá "Convertendo filename.tif". o basenamecomando usa 2 argumentos, por exemplo basename file.tif .tif, retornará "arquivo" removendo a extensão .tif. Você pode modificar o loop para dizer "Convertendo filename.tif em filename.jpg" com o mesmo comando basename, se desejar.
Matt
findO primeiro argumento deve ser o caminho, de modo que a última linha deve ser for f in $(find . -name *.tif); do ...; done(desde que nós cdeditamos o diretório antes). Tentei editar a resposta de @ Matt, mas as edições devem ter pelo menos 6 caracteres por algum motivo.
precisa saber é o seguinte
Obrigado ..................................... trabalhando
balaji
22

Eu encontrei essa pergunta ao tentar fazer isso sozinho, para referência futura, você também pode fazê-lo assim:

convert *.tiff -set filename: "%t" %[filename:].jpg

ou colocá-lo em um subdiretório

mkdir jpg
convert *.tiff -set filename: "%t" jpg/%[filename:].jpg
Robert Bak
fonte
1
Yay para manipulação interna de nome de arquivo.
Beerbajay
Isso funcionou muito bem para mim com arquivos png também. O comportamento dos PDFs foi diferente, no entanto.
Wdkrnls 28/03/2015
Eu adoraria ver isso funcionando, no entanto, isso relatou um erro de barramento no ImageMagick 6.6.9-7 2014-03-06 Q16 (OpenMP) no Ubuntu 64. A resposta aceita funciona bem.
TFuto
Uma palavra de aviso: Isso congelou para mim todo o sistema (GNOME 3) e eu tive que desligar o computador com força
0__ 06/06/06
2

O Imagemagick deve poder convertê-los. É um pacote de programas de linha de comando, se você estiver bem com isso.

Parte disso é convert -

homem convertido:

converter - converta entre formatos de imagem, além de redimensionar uma imagem, desfocar, cortar, remover manchas, pontilhar, desenhar, inverter, juntar-se, voltar a amostrar e muito mais.

Marto
fonte
1
A resposta de Matt é realmente muito mais útil
marto
1
Sim. Você está aí.
chrisjlee
1

Se você preferir um aplicativo GUI, poderá instalar o Phatch através dos repositórios normais. Basta abrir o Ubuntu Software Center e procurar por ele. Não estou mais no 11.04, mas já o tinha instalado.

Façam
fonte
1

As respostas acima são usadas *.tifpara a seleção tif, mas isso retornará um erro se você tiver muitos arquivos no diretório de trabalho atual. Uma solução simples é usar um script python para converter cada arquivo no cwd:

import glob, os

for c, i in enumerate(glob.glob('ecco_images/*')):
  print(' * converting', i)
  os.system('convert ' + i + ' ' + i.replace('.TIF','.jpg'))
duhaime
fonte
for f in *.tifnão errará, mas convert *.tifsim.
muru 18/08/19
Ah, obrigado @muru! Eu pensei que a expansão * seria a mesma no nível OS, mas estou feliz por ser corrigida.
Duhaime
0

Gostaria de acrescentar à resposta de @ Matt que, se você quiser que os arquivos sejam salvos nas subpastas, faça o seguinte:

find -name *.tif | while read f; do echo "Converting $f"; convert "$f"  "${f%.*}".jpg; done

Isso também lida com o problema se o caminho / nome do arquivo tiver espaços.

JTIM
fonte
0

A solução GUI do GIMP usando um plug-in de processo em lote

Funciona no Ubuntu 18.04 usando o GIMP 2.8


Janela de diálogo Processador em lote

Janela de diálogo Entrada de processo em lote


Janela de diálogo Processador em lote

Janela de diálogo Processador em lote


instruções de instalação

1 - Faça o download do arquivo atual do plug-in da página inicial do DBP - David's Batch Processor na área de trabalho. Para o Ubuntu 18.04, arruinando o Gimp 2.8, o arquivo que funcionou para mim foi o dbpSrc-1-1-9.tgz .

2 - Pegue alguns arquivos de desenvolvimento do GIMP:

sudo apt-get install libgimp2.0-dev gcc cpp g++

3 - Alterne para o diretório de código-fonte do sistema:

cd /usr/src/

4 - Extraia o plug-in da área de trabalho para seu próprio diretório de código-fonte. Substitua [nome do usuário] pelo seu nome de usuário atual e use o nome do arquivo que você baixou acima na etapa 1:

sudo tar -xvzf /home/[username]/Desktop/dbpSrc-1-1-9.tgz

5 - Mude para o diretório de código-fonte do plugin:

cd dbp-1.1.9

6 - Compile o plugin:

sudo make

7 - Instale o plugin:

sudo make install

8 - Inicie o GIMP e você encontrará o plugin em Menu-> Filtros-> Processo em lote.

Processo em lote do GIMP .. Caminho do menu

SunnyDaze
fonte