shell: bilder verkleinern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ruwen
Beiträge: 386
Registriert: 06.04.2003 18:37:25

shell: bilder verkleinern

Beitrag von ruwen » 27.11.2004 01:09:08

Moin moin!

Gibs reinzufällig ein kleines Kommandozeilenprogramm, mit dem ich zu jeden Bild in einem Ordner eine Miniatur erstellen kann?

Benutzeravatar
ManInTheShak
Beiträge: 108
Registriert: 30.09.2003 19:50:54

Re: shell: bilder verkleinern

Beitrag von ManInTheShak » 27.11.2004 01:20:24

ruwen hat geschrieben:Moin moin!

Gibs reinzufällig ein kleines Kommandozeilenprogramm, mit dem ich zu jeden Bild in einem Ordner eine Miniatur erstellen kann?
Es gibt z.B. ImageMagick (apt-get imagemagick), das bringt sehr viele Programme für die Bildbearbeitung auf der console mit.

Code: Alles auswählen

convert
bzw. das Manual von Convert ist dein Freund ;-)

Gruß ManInTheShak

Benutzeravatar
Mr_Snede
Beiträge: 2323
Registriert: 08.07.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ruhrpott

Beitrag von Mr_Snede » 27.11.2004 12:32:14

Convert ist schon richtig, hier ist ein Weg in Python, den ich benutze (ist auch ein Beispiel aus der Python Doku).

Einfach dieses Skript in den Ordner legen, in dem auch die Bilder sind und ausführen.

Code: Alles auswählen

import glob
import os
import Image

for infile in glob.glob("*.JPG"):
    file, ext = os.path.splitext(infile)
    im = Image.open(infile)
    im.thumbnail((500, 375), Image.ANTIALIAS)
    im.save(file + "-thumb.jpg", "JPEG")
cu Sebastian

Benutzeravatar
ruwen
Beiträge: 386
Registriert: 06.04.2003 18:37:25

Beitrag von ruwen » 27.11.2004 13:30:09

Vielen Dank für die schnellen Antworten.

Ich bin totaler phyton DAU :(

Ich hab einfach den Krams in eine Datei namens script gepackt und mit python script ausgeführt. Ging aber nicht :(

Code: Alles auswählen

python script
  File "script", line 7
    im = Image.open(infile)
    ^
SyntaxError: invalid syntax

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 27.11.2004 13:37:13

Hi ruwen,

beim Script von Mr_Snede schaut alles ok aus, achte darauf daß die Einrückungen übereinstimmen und nicht Tabs und Spaces vermischt verwendet werden! Und das zu jeder öffnenden Klammer auch die passende schließende Klammer vorhanden ist.

Wenn Du als erste Zeile noch

Code: Alles auswählen

#!/usr/bin/env python
verwendest, kannst du das script auch einfach mit ./script starten.

Ansonst poste dein Script mal mit copy und paste innerhalb von <code>...</code>, < und > durch [ und ] ersetzen!


Gruß

Dookie

Benutzeravatar
ruwen
Beiträge: 386
Registriert: 06.04.2003 18:37:25

Beitrag von ruwen » 27.11.2004 13:49:22

Jo das mit den Einrückungen wars :)

Vielen Dank :)

Benutzeravatar
ruwen
Beiträge: 386
Registriert: 06.04.2003 18:37:25

Beitrag von ruwen » 27.11.2004 14:10:04

Kann man das Script nicht irgendwie so verändern, das man nur die Höhe angibt und der die Breite prozentual mit verkleinert?

MfG ruwen

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 27.11.2004 14:16:12

Jo kann man, ich hab auch mal sowas gemacht, da hat man dann die maximale breite und höhe eingegeben und das thumb wurde mit richtigen proportionen, auch hochformatig eingepasst, muss ich aber erst raussuchen.


Dookie

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 27.11.2004 15:05:19

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import glob
import os
import Image

max_h = 240

for infile in glob.glob("*.JPG"):
    fname, ext = os.path.splitext(infile)
    im = Image.open(infile)
    w, h = im.size
    new_w = max_h * w / h
    im.thumbnail((new_w, max_h), Image.ANTIALIAS)
    im.save(fname + "-thumb.jpg", "JPEG")
Dookie

Benutzeravatar
ruwen
Beiträge: 386
Registriert: 06.04.2003 18:37:25

Beitrag von ruwen » 27.11.2004 21:23:33

Funktioniert, danke :)

Antworten