Anzeige:
Ergebnis 1 bis 13 von 13

Thema: Bilder verkleinern

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29

    Angry Bilder verkleinern

    Hi!

    Ich kenne mich mit shell-scripten nicht gut aus. Leider habe ich heute von einem Grafiker Bilder bekommen, die alle um den Faktor 0.2964 zu groß sind (sagt Gimp)!

    Ich muss alle Bilder verkleinern. Das wäre am einfachsten mit einem Script...

    Ich weis nur nicht, wie ich das anstellen könnte... Die einzige Sprache, die ich kann ist PHP

    Gruß, fabian

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    wie wärs mit einem Shellscript und irgend so nem Tool aus dem ImageMagick-Paket

    damit machst du ne for-schleife, etwa so

    Code:
    for f in *.jpg; do
         convert $f
    done
    welchen befehl du genau nehmen musst weiss ich nicht genau. Aber das Paket hat sicher was dazu (hab das glaubich auch schon mal gebraucht)

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    Das ist schon mal ein ganz guter Tipp!
    Ich kann mir folgende Vorgehensweise vorstellen:

    Ändern jedes einzelnen Bildes mit
    mogrify -geometry 30%x30%! *.jpg

    Dann muss ich noch die verzeichnisse irgendwie rekursiv? durchlaufen...
    Könnt ihr mir da vielleicht weiterhelfen

    Gruß

    Ach ja: Ich muss vor dem ändern der Bilder, den Schreibschutz ändern, der Bei der Kopie von cd entsteht. wie??
    Geändert von inner.glow (08-10-2003 um 16:49 Uhr)

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von inner.glow
    Das ist schon mal ein ganz guter Tipp!
    Ich kann mir folgende Vorgehensweise vorstellen:

    Ändern jedes einzelnen Bildes mit
    mogrify -geometry 30%x30%! *.jpg

    Dann muss ich noch die verzeichnisse irgendwie rekursiv? durchlaufen...
    Könnt ihr mir da vielleicht weiterhelfen
    ah ja, mogrify hiess das teil

    versuchs mal so:
    Code:
    for f in `find -name "*.jpg"`; do
       mogrify -geometry 30%x30%! $f
    done
    (Die lieben tollen Unix-Werkzeuge )

    Ach ja: Ich muss vor dem ändern der Bilder, den Schreibschutz ändern, der Bei der Kopie von cd entsteht. wie??
    Liegt das Zeugs denn auf ner Fat-Partition? Dann musst du beim mounten dir n bisserl Rechte zuschaufeln, etwa mit dem Parameter: umask=000

    Unter Linux (mit Linux-Dateisystemen) gibts glaub ich keinen separaten Schreibschutz (d.h. schon, über die benutzerrechte)

    die Benutzerrechte kannst du mit chmod ändern, etwa "chmod 755 img.jpg" (z.B. oben in der Schleife einfügen)

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    Mit Schreibschutz meinte ich eigentlich die Schreib-Berechtigung für den Besitzer...

    Das geht doch irgendwie mit chmod??

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Jo, 1=ausführen, 2=schreiben, 4=lesen. Die Summe daraus gibt die Berechtigung an. Die Berechtiung wird in der Reihenfolge User / Group / Other gesetzt.

    Beispiel. User darf lesen, schreiben und ausführen, Gruppe soll mur lesen und ausführen können, Aandere sollen drußen bleiben, ergibt: chmod 750 dateiname

    chmod gibts auch noch mit anderer Syntax, aber das konnte ich mir noch nie merken und hat auch noch weiter Optionen. siehe man chmod
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von Hans-Georg Normann
    chmod gibts auch noch mit anderer Syntax, aber das konnte ich mir noch nie merken
    ich auch nicht
    Da bin ich ja froh, dass ich nicht der einzige bin.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    So, ich hab' jetzt folgendes Script (u.a.):

    for bild in `find -name "*.jpg"`; do
    chmod 750 $bild
    mogrify -geometry 29.61%x29.61%! $bild
    echo "$bild verkleinert"
    done

    Nur ist jetzt folgendes: Die Dateinamen haben Leerzeichen und jetzt will das Programm nach jedem Leerzeichen eine neue Datei verändern:


    ./start seite/hintergrund.jpg

    heisst eine (dei erste gefundene) Datei

    Anfang der Fehlermeldungen:

    chmod: konnte Attribute von »./start« nicht holen: Datei oder Verzeichnis nicht gefunden
    mogrify: Unable to open file (./start) [No such file or directory].
    mogrify: Missing an image file name [No such file or directory].
    ./start verkleinert
    chmod: konnte Attribute von »seite/hintergrund.jpg« nicht holen: Datei oder Verzeichnis nicht gefunden
    mogrify: Unable to open file (seite/hintergrund.jpg) [No such file or directory].
    mogrify: Missing an image file name [No such file or directory].
    seite/hintergrund.jpg verkleinert

    Was tun??

  9. #9
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von inner.glow
    So, ich hab' jetzt folgendes Script (u.a.):

    for bild in `find -name "*.jpg"`; do
    chmod 750 $bild
    mogrify -geometry 29.61%x29.61%! $bild
    echo "$bild verkleinert"
    done

    Nur ist jetzt folgendes: Die Dateinamen haben Leerzeichen und jetzt will das Programm nach jedem Leerzeichen eine neue Datei verändern:

    ...
    ich würds mit Anführungszeichen versuchen:

    Code:
    for b in `find -name "*.jpg"`; do 
        chmod 750 "$b"
        mogrify -geometry 29.61%x29.61%! "$b"
        echo "$bild verkleinert"
    done
    sollte gehen finde ich.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  10. #10
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Original geschrieben von peschmae
    Code:
    for b in `find -name "*.jpg"`; do 
        chmod 750 "$b"
        mogrify -geometry 29.61%x29.61%! "$b"
        echo "$bild verkleinert"
    done
    Nicht doch! Mag zwar laufen, ist aber viel zu kompliziert.

    versuch doch mal
    Code:
    cd /dein/verzeichnis
    find . -iname "*.jpg" -exec chmod 750 {} \;
    find . -iname "*.jpg" -exec mogrify -geometry 29.61%x29.61%! {} \;
    {} liefert den gefundenen Dateinamen
    -iname ignoriert Gross- und Kleinschreibung
    Das Semikolon am Ende der Zeile muß maskiert werden, sonst wir es von der shell interpretiert. Man könnte das ganze auch noch auf einen Suchlauf beschränken.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  11. #11
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    Also, wenn ich das Programm ausführe kommen folgende Fehlermeldungen:

    mogrify: Unable to open file (./start seite/hintergrund.mgk).
    mogrify: Unable to open file (./seitei punching bags/start seite/start-seite-punching.mgk).
    ...

    Ich weis zwar nicht, was das heisst, aber ich glaube, dass der Fehler daran liegt, dass ich die Dateien von CD kopiert hab'. Alle Verzeichnisse, unterverzeichnisse und Dateien sind Schreibgeschützt. Ich müsste also, wie ich glaube, den Schreibschutz aller Dateien und Ordner aufheben... aber wie??

    Gruß, fabian

  12. #12
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29
    Zu früh gepostet, ich habs:

    chmod -R 750 *

  13. #13
    Registrierter Benutzer
    Registriert seit
    07.10.2003
    Ort
    München
    Beiträge
    29

    Talking

    Es hat geklappt!!

    Mit eurer Hilfe hab' ich mir einige Stunden Arbeit erspart. Danke.

    Lösung:

    Code:
    #!/bin/bash
    
    cd /mein/verzeichnis
    
    chmod -R 750 *
    
    find . -iname "*.jpg" -exec mogrify -geometry 29.61%x29.61%! {} \;
    find . -iname "*.gif" -exec mogrify -format png {} \;
    find . -iname "*.gif" -exec rm {} \;
    find . -iname "*.png" -exec mogrify -geometry 29.61%x29.61%! {} \;
    Gruß, Fabian

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •