Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[Tip] Bilder automatisch skalieren --> einfaches Skript

Alles rund um das Thema Multimedia unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

[Tip] Bilder automatisch skalieren --> einfaches Skript

Beitrag von mada »

Hallo zusammen,

weiter unten in diesem Themenbereich tauchte etwa zweimal die Frage auf, wie man mit Linux Bilder moeglichst komfortabel verkleinern kann.
Es hat auch Antworten gegeben, aber keiner hatte gewusst, dass ImageMagick so schlau ist, das Aspektverhaeltnis der Bilder automatisch beizubehalten. Man muss also nicht erst hochformatige Bilder aussortieren und drehen, resizen und wieder zurueckdrehen, sondern kann direkt auf alle Bilder einen Befehl loslassen.
Ich habe das ganze mittlerweile in einem Skript, das mir alle .jpg Bilder auf 1024px fuer die laengere Seite skaliert und die urspruenglichen Bilder in einen extra Ordner verschiebt. Natuerlich kann mans auch andersrum machen, einfach halt das Skript entsprechend aendern!

Code: Alles auswählen

#!/bin/bash
# Bilder skalieren und Dateinamen erweitern
# Ordner fuer die Originale
mkdir Originale
for pic in *.jpg
do
# mit ImageMagick skalieren: laengste Seite 1024px
convert -verbose -quality 75 "$pic" -scale 1024x1024 "R_$pic"
# originale Bilder verschieben
mv $pic Originale/
done
Es ist darauf zu achten, dass die Dateien alle auf .jpg enden muessen. Falls man .JPG, .jpeg, .JPEG usw. hat, muss man halt ebenfalls eine Korrektur des Skripts vornehmen.

Das Skript (wie alle selbstgebauten Skripten!) am besten ins ~/bin-Verzeichnis ablegen und ausfuehrbar machen, dann kann man von ueberall darauf zugreifen!

An dieser Stelle moechte ich dann auch noch bbgallery empfehlen, ein wirklich sensationelles perlskript, mit dem sich topeinfach extrem schicke Bildergalerien erstellen lassen!

http://bbgallery.sourceforge.net/

Per apt laesst es sich auch intstallieren:
apt install bbgallery perl-HTML-Template

glg, Daniel
Zuletzt geändert von mada am 14. Feb 2006, 13:26, insgesamt 2-mal geändert.
Benutzeravatar
Hermann
Hacker
Hacker
Beiträge: 442
Registriert: 11. Mai 2004, 18:55
Wohnort: Duisburg
Kontaktdaten:

Re: Bilder automatisch skalieren --> einfaches Skript

Beitrag von Hermann »

mada hat geschrieben:...Es hat auch Antworten gegeben, aber keiner hatte gewusst, dass ImageMagick so schlau ist, das Aspektverhaeltnis der Bilder automatisch beizubehalten...

Code: Alles auswählen

...convert -verbose -quality 75 "$pic" -scale 1024x1024 "R_$pic"...
...
Hallo Daniel, wenn man nach "Bilder scalieren" sucht bekommt man:

http://www.linux-club.de/viewtopic.php? ... +scalieren
und da steht dann:

man convert für die Manpage
z.B.
convert -verbose ./bild.jpg -scale 1024x768 ./bild-neu.jpg
für eine neue Auflösung.

Gruß, Hermann
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

hast schon recht, aber...

Beitrag von mada »

Hallo Hermann,

das stimmt schon, was Du sagst, aber:

Erstens kannst auf diese Weise nur einzelne Bilder skalieren, fuer einen Ordner mit 113 jpgs brauchst knapp ne Stunde dafuer.

Und zweitens ist die Angabe 1024x768 nicht dazu geeignet, sowohl hochformatige als auch querformatige Bilder richtig zu skalieren. Wenn du damit naemlich ein portrait, z.B. 1200x1600, bearbeitest, bekommst nicht etwa 768x1024 zurueck, sondern eben nur 576x768! Damit hast bei hochformatigen Bildern erheblich mehr Qualitaetsverlust, als bei Querformaten.

Wenn Du aber sagst 1024x1024, dann passts! Und die Bildseitenverhaeltnisse kommen auch nicht aus dem Tritt.

Und das war ein Posting wert, war naemlich nirgends zu finden, bin auf der ImageMagick-HP druebergestolpert.

Also nix fuer ungut, aber ich gehe mal davon aus, dass Du nicht ganz verstanden hast, worauf ich rauswollte.

lg, Daniel
Benutzeravatar
Hermann
Hacker
Hacker
Beiträge: 442
Registriert: 11. Mai 2004, 18:55
Wohnort: Duisburg
Kontaktdaten:

Re: hast schon recht, aber...

Beitrag von Hermann »

mada hat geschrieben:...Erstens kannst auf diese Weise nur einzelne Bilder skalieren, fuer einen Ordner mit 113 jpgs brauchst knapp ne Stunde dafuer.

Und zweitens ist die Angabe 1024x768 nicht dazu geeignet, sowohl hochformatige als auch querformatige Bilder richtig zu skalieren...
Hallo Daniel, stimmt, aber es gibt schon einige Themen hier wo es um das umbenennen/konvertieren von allen Bildern in einem Ordner geht.
Da sollte es doch möglich sein in der for Schleife die Zeile:
convert "$bild" "${bild%.png}.pgm"
durch
convert -verbose -quality "$bild" -scale 1024x768 "S_$bild"
zu ersetzen und wenn es dann auch in der Höhe max 1024 sein soll durch
convert -verbose -quality "$bild" -scale 1024x1024 "S_$bild"
zu ersetzen.

Und zu vielen Programmen gibt es Hilfe man Programmname oder Programmname --help.

Gruß, Hermann
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

Beitrag von mada »

Hallo?

Exakt *die* Information, dass ImageMagick die Bildseitenverhaeltnisse auch bei einer Angabe 1024x1024 BEIBEHAELT war nirgends gestanden, auch in Deinem geschaetzten Beitrag nicht. Die im genannten Thread und einem anderen vorgeschlagenen Loesungen waren im Endeffekt dann Xnview (GUI) oder Hochformate aussortieren und getrennt verarbeiten...

Es tut mir leid, aber Letzteres ist ja wohl aber mal deutlich unpraktischer als das Skript, das ich jetzt gepostet hab.

Versteh nicht, warum es da noch eines weiteren Kommentars ala "war schon so aehnlich woanders gestanden" und "das bisschen skripten kann doch jeder" bedarf. Die paar Zeilen Skript machen ohne Aufwand genau das, was etliche Digicambesitzer dringend brauchen, bisher aber im schlimmsten Fall mit Gimp oder Photoshop einzeln fuer jedes Bildchen machen.

lg, Daniel

immer noch der Meinung, das dieser Codefetzen von mir einigen helfen wird.
Benutzeravatar
Hermann
Hacker
Hacker
Beiträge: 442
Registriert: 11. Mai 2004, 18:55
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Hermann »

mada hat geschrieben:...immer noch der Meinung, das dieser Codefetzen von mir einigen helfen wird.
Das wird wohl so sein. Es schadet aber auch nicht selber mal ein wenig zu überlegen, das nächste Problem kann man dann selber lösen.

*edit*
--scale = Seitenverhältnis beim scalieren beibehalten
1024x768 = maximale ausdehnung

Gruß, Hermann
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

da hast du schon recht

Beitrag von mada »

Hallo Hermann,
Es schadet aber auch nicht selber mal ein wenig zu überlegen, das nächste Problem kann man dann selber lösen.
Um den Satz fertig zu machen:
Und wenn mans geloest hat, dann schadet es auch nicht, wenn man's anderen mitteilt. Nix anderes hab ich gemacht, und dazu is naemlich dieses Forum da :)

Muss mich jetzt aber mal auf die Socken machen.

Schoenen Abend noch Dir,

lg, Daniel
Benutzeravatar
Hermann
Hacker
Hacker
Beiträge: 442
Registriert: 11. Mai 2004, 18:55
Wohnort: Duisburg
Kontaktdaten:

Re: da hast du schon recht

Beitrag von Hermann »

mada hat geschrieben:...Um den Satz fertig zu machen:
Und wenn mans geloest hat, dann schadet es auch nicht, wenn man's anderen mitteilt
Der Satz ist gut :-).

Gruß, Hermann
Benutzeravatar
Kurt M
Hacker
Hacker
Beiträge: 408
Registriert: 24. Sep 2004, 12:39
Wohnort: Bayrischer Wald
Kontaktdaten:

Re: Bilder automatisch skalieren --> einfaches Skript

Beitrag von Kurt M »

mada hat geschrieben: Es hat auch Antworten gegeben, aber keiner hatte gewusst, dass ImageMagick so schlau ist, das Aspektverhaeltnis der Bilder automatisch beizubehalten.
Hallo Daniel,

hab nach so einem Script gesucht und deines kam mir gerade recht.
Es läuft absolut perfekt.
Damit kann ich den ganzen Sack voll großer Bilder für das Internet skalieren und vor allem es geht sehr schnell, und ich habe mir die Arbeit gespart selbst nachdenken zu müssen :wink:

Danke
Kurt
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

Beitrag von mada »

Ja, das freut natürlich, wenn ein so altes Posting nochmal zu solchen Ehren kommt :) Genau aus dem gleichen Grund hab ich mir das damals zusammengesucht, um massenweise Bilder auf einen Rutsch internettauglich zu machen...

Schönen Dienstag noch,
Daniel
*Evidently, one is not going to be able to build a castle of blocks unless the blocks are a good deal smaller than the castle - E. Hecht
Undying
Member
Member
Beiträge: 73
Registriert: 26. Sep 2005, 11:32

Beitrag von Undying »

Code: Alles auswählen

convert -verbose -quality 75 "$pic" -scale 1024x1024 "R_$pic"
Bewirkt das dass jeweilige Bild eine Seite 1024 px hat und die andere entsprechender skaliert wird oder einfach beide Seite auf 1024 x 1024px?

Um eine 100% Qualität zu bekommen und Bilder dessen Seite, eine!, 500px breit/hoch ist kann ich dann wenn nur eine Seite auf 1024px im obigen Skript folgendes machen:

Code: Alles auswählen

convert -verbose -quality 100 "$pic" -scale 500x500 "R_$pic"
oder?[/code]
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

Beitrag von mada »

Ja, steht ganz oben im Posting drin: das Seitenverhältnis bleibt grundsätzlich erhalten, wenn Du das nicht willst, also z.B. tatsächlich ein 500x500 Bild als Ergebnis haben willst, dann muss man das über eine Option mitteilen -- welche weiß ich auch grad nicht auswendig. ImageMagick-Hilfe weiß da sicher mehr.

Eine 100% Qualität bei JPGs dürfte jedenfalls nicht viel bringen, ausser dass die Dateigröße enorm wird. Werte über 85% haben in der Praxis eigentlich keine Relevanz, drum ist es auch die Voreinstellung beim Export nach jpg in GIMP...

Beim Ausprobieren geht übrigens nichts kaputt, Deinen Originalbilder werden nicht angefasst, also nur Mut.
*Evidently, one is not going to be able to build a castle of blocks unless the blocks are a good deal smaller than the castle - E. Hecht
Undying
Member
Member
Beiträge: 73
Registriert: 26. Sep 2005, 11:32

Beitrag von Undying »

Bekomme ich auch eine 90° Drehung nach rechts oder linsk damit hin?
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

Beitrag von mada »

Ja, geht alles mit ImageMagick. Der Kontexbefehl des Konqeror z.B. tut nichts anderes, als den entsprechenden ImageMagick-Befehl auszurufen... Aber so ein bissl Eigeninitiative wär auch nicht schlecht, oder nicht?
*mit Zaunpfahl und Silbertablett wink*

Code: Alles auswählen

man convert
könnte Dir helfen
Zuletzt geändert von mada am 18. Feb 2006, 17:52, insgesamt 1-mal geändert.
*Evidently, one is not going to be able to build a castle of blocks unless the blocks are a good deal smaller than the castle - E. Hecht
Benutzeravatar
TheTuxKeeper
Member
Member
Beiträge: 127
Registriert: 31. Jan 2005, 17:18
Kontaktdaten:

Beitrag von TheTuxKeeper »

Undying hat geschrieben:Bekomme ich auch eine 90° Drehung nach rechts oder linsk damit hin?
Mit "convert -help" oder "man convert" werden dir die möglichen Optionen ausgegeben.

Hiermit kannst du das Bild drehen:

Code: Alles auswählen

convert -rotate degrees
Nur bin ich mir gerade nicht sicher, ob das Ganze im oder gegen den Uhrzeigersinn gedreht wird (steh grad total aufm Schlauch :oops: ).

Daniel
IBM X30 -- PIII M 1200MHz -- 512MB Ram
OpenSUSE 10.2 -- KDE
Gentoo 2006.1 ~x86
Undying
Member
Member
Beiträge: 73
Registriert: 26. Sep 2005, 11:32

Beitrag von Undying »

Ok, hast ja eigentlich recht und ich stand gerade auch auf dem Schlauch weil irgendwie nicht drauf gekommen bin wie ich die Hilfe aufgerufen bekomme für convert bis ich es dann sah :oops:
Naja Danke trotzdem

EDIT:
convert: unable to open image `*.jpg': Datei oder Verzeichnis nicht gefunden.
mv: Aufruf von stat für „*.jpg“ nicht möglich: Datei oder Verzeichnis nicht gefunden
EDIT die 2.te:
Hat sich erledigt... Hab die Endung in Großbuchstaben gehabt, soviel zu 'auf den Schlauch stehen" ^^
Benutzeravatar
mada
Hacker
Hacker
Beiträge: 570
Registriert: 22. Sep 2004, 20:38
Wohnort: Freiburg i.Brsg.
Kontaktdaten:

Beitrag von mada »

Wenn in dem Verzeichnis sonst nichts drin ist als jpg, jpeg, JPG und JPEG (was ja das gleiche ist), dann kannst das Skript auch einfacher machen:

Code: Alles auswählen

for pic in *
statt

Code: Alles auswählen

for pic in *.jpg 
Dann musst Dich nicht mit Groß-/Kleinschreibung ärgern. Oder halt vorher noch eine paar Befehle dranhängen, die erstmal aus allen JPEGs usw. jpg machen.
*Evidently, one is not going to be able to build a castle of blocks unless the blocks are a good deal smaller than the castle - E. Hecht
Undying
Member
Member
Beiträge: 73
Registriert: 26. Sep 2005, 11:32

Beitrag von Undying »

OKay danke.
Benutzeravatar
hwippich
Newbie
Newbie
Beiträge: 22
Registriert: 30. Apr 2005, 09:26
Kontaktdaten:

Beitrag von hwippich »

Eine englische Anleitung findet ihr auch auf euren PC unter
'file:///usr/share/doc/packages/ImageMagick/index.html'
Forsti
Newbie
Newbie
Beiträge: 9
Registriert: 26. Jul 2012, 15:13

Re: [Tip] Bilder automatisch skalieren --> einfaches Skript

Beitrag von Forsti »

Das wird mir auf jeden Fall sehr viele Stunden Arbeit ersparen. Man glaubt gar nicht, wie viel Zeit man für das manuelle Skalieren vertrödelt.
Antworten