Przetwarzanie wsadowe obrazów tif? Konwertowanie .tif na .jpeg

41

Próbuję masowo przekonwertować garść .tifplików. Odkryłem, że phatch może wyglądać na dobrą kandydaturę, ale używam Ubuntu 11.04. Wygląda na to, że nie mają .debmojej wersji.

Każdy ma jakieś alternatywy dla phatch lub inne zalecenia, jak szybko wsadowo przekonwertować tifna jpegpliki.

Szukam rozwiązania innego niż Photoshop (ala Wine).

chrisjlee
źródło

Odpowiedzi:

75

Łatwo. Zainstaluj imagemagick :

sudo apt-get install imagemagick

Najprostsze użycie to:

convert File.tif File.jpg

Jest inteligentny i ma rozszerzenie pliku.

Teraz do wykonywania konwersji wsadowych użyjemy pętli.

cd do katalogu, w którym znajdują się twoje pliki tif.

następnie:

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

Czytaj także jako:

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

Że należy to zrobić!

Ponadto, po przekonwertowaniu wszystkich plików i sprawdzeniu integralności nowego pliku jpg, wystarczy uruchomić rm *.tifw tym katalogu, aby usunąć wszystkie stare pliki .tif. Uważaj jednak na gwiazdki, nie dodawaj spacji po *, inaczej usuniesz wszystkie pliki z katalogu.

Wskazówka: jeśli masz folder z podfolderami, w którym znajdują się te obrazy. Możesz użyć tego do pętli, aby znaleźć wszystkie pliki .TIF w tym folderze:

for f in $(find -name *.tif); do ...; done
Matt
źródło
Czy to ma wydrukować Converting filename.tifczy Converting filename?
azotan sodu
1
@ azotan sodu powie „Converting filename.tif”. basenamekomenda trwa 2 argumenty, na przykład basename file.tif .tifpowróci „plik” odpędzania rozszerzenie .tif dalej. Możesz zmodyfikować pętlę, aby powiedzieć „Konwertowanie pliku.tif na nazwę pliku.jpg” za pomocą tej samej komendy basename, jeśli chcesz.
Matt
findpierwszy argument powinien być ścieżką, więc ostatnia linia powinna być for f in $(find . -name *.tif); do ...; done(ponieważ wcześniej cdedytowaliśmy w katalogu). Próbowałem edytować odpowiedź @ Matta, ale z jakiegoś powodu zmiany muszą mieć co najmniej 6 znaków.
mrtnmgs
Dziękuję ..................................... praca
balaji
22

Znalazłem to pytanie, próbując zrobić to sam, do wglądu w przyszłości możesz również zrobić to w ten sposób:

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

lub umieścić go w podkatalogu

mkdir jpg
convert *.tiff -set filename: "%t" jpg/%[filename:].jpg
Robert Bak
źródło
1
Tak, wbudowana obsługa nazw plików.
beerbajay
Działa to również dla mnie świetnie z plikami png. Jednak zachowanie plików pdf było inne.
wdkrnls
Chciałbym, aby to działało, jednak zgłosił błąd magistrali na ImageMagick 6.6.9-7 2014-03-06 Q16 (OpenMP) na Ubuntu 64. Przyjęta odpowiedź działa dobrze.
TFuto
Słowo ostrzeżenia: To zamroziło dla mnie cały system (GNOME 3) i musiałem mocno wyłączyć komputer
0__
2

Imagemagick powinien móc je przekonwertować. Jest to pakiet programów wiersza polecenia, jeśli nie masz nic przeciwko.

Częścią tego jest konwersja -

konwersja człowieka:

konwersja - konwersja między formatami obrazu, a także zmiana rozmiaru obrazu, rozmycie, kadrowanie, usuwanie, dithering, rysowanie, odwracanie, łączenie, ponowne próbkowanie i wiele więcej.

marto
źródło
1
Odpowiedź Matta jest o wiele bardziej przydatna
marto
1
Tak. Jesteś tam
chrisjlee
1

Jeśli wolisz aplikację GUI, możesz zainstalować Phatch za pośrednictwem zwykłych repozytoriów. Wystarczy otworzyć Centrum oprogramowania Ubuntu i wyszukać. Nie jestem już 11.04, ale wtedy go zainstalowałem.

Do zrobienia
źródło
1

Powyższe odpowiedzi służą *.tifdo wyboru tif, ale zwróci błąd, jeśli masz zbyt wiele plików w bieżącym katalogu roboczym. Prostym obejściem jest użycie skryptu Pythona do konwersji każdego pliku w pliku 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
źródło
for f in *.tifnie popełni błędu, ale convert *.tifbędzie.
muru
Ach, dzięki @muru! Myślałem, że * rozszerzenie będzie takie samo na poziomie systemu operacyjnego, ale cieszę się, że mogę je poprawić.
duhaime
0

Chciałbym dodać do odpowiedzi @ Matta, że ​​jeśli chcesz, aby pliki były zapisywane w podfolderach, możesz wykonać następujące czynności:

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

To rozwiązuje również problem, jeśli ścieżka / nazwa pliku zawiera spacje

JTIM
źródło
0

Rozwiązanie GIMP GUI przy użyciu wtyczki Batch Process

Działa w Ubuntu 18.04 przy użyciu GIMP 2.8


Okno dialogowe wprowadzania danych procesora wsadowego

Okno dialogowe wprowadzania danych wsadowych


Okno dialogowe Wyjście procesora wsadowego

Okno dialogowe Wyjście procesora wsadowego


Instrukcje Instalacji

1 - Pobierz aktualny plik wtyczki z DBP - strony głównej David's Batch Processor na swój pulpit. W przypadku Ubuntu 18.04, który zrujnował Gimp 2.8, działał dla mnie plik dbpSrc-1-1-9.tgz .

2 - Pobierz niektóre pliki programistyczne GIMP:

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

3 - Przejdź do katalogu kodu źródłowego systemu:

cd /usr/src/

4 - Wyodrębnij wtyczkę z pulpitu do własnego katalogu kodu źródłowego. Zastąp [nazwa użytkownika] bieżącą nazwą użytkownika i użyj nazwy pliku pobranej powyżej w kroku 1:

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

5 - Przejdź do katalogu kodu źródłowego wtyczki:

cd dbp-1.1.9

6 - Skompiluj wtyczkę:

sudo make

7 - Zainstaluj wtyczkę:

sudo make install

8 - Uruchom GIMP, a wtyczkę znajdziesz w Menu-> Filtry-> Proces wsadowy.

Proces wsadowy GIMP. Ścieżka menu

SunnyDaze
źródło