Straßenmaler

HowTo: Bilder in verschiedenen Größen erstellen

Die Herausforderung

Fotos sind oft viel zu groß (sowohl in der Auflösung, als auch in der Dateigröße) um auf einer Webseite angezeigt zu werden. Unter Umständen benötigt man auch ein Bild in verschiedenen Größen (z.B. für Teaser ein kleines, für den Artikel ein größeres Bild).

Lösung: ImageMagick und ein kleines Skript

ImageMagick wird bei den meisten Linxu-Distributionen als Paket mitgeliefert und muss gegebenenfalls nachinstalliert werden (hier für Debian).

apt-get install imagemagick

Das Skript wandelt nun ein gegebenes Bild in 4 Bilder in unterschiedlichen Größen um. In meinen Beispiel in folgende Größen (wobei die Angaben für Breite und Höhe der jeweilige Maximalwert sind und das Seitenverhältnis erhalten bleibt):

  • Small 200x200
  • Medium 500x500
  • Large 1000x1000
  • XLarge 1500x1500
#!/bin/bash
# Pfad zum Programm
convertProgram=/usr/bin/convert 

function doConvert {
    inputFile=$1
    formatExtension=$2
    convertOptions=${@:3}

    pathName=`echo "$inputFile" | rev | cut -d'.' -f1 --complement | rev`
    ext=`echo "$inputFile" | rev | cut -d'.' -f1 | rev`

    newFile=$pathName
    newFile+=$formatExtension
    newFile+="."
    newFile+=$ext

    $convertProgram "$inputFile" $convertOptions "$newFile"

    # Hier noch die Berechtigungen für die Datei passend für den Webserver setzen
    chown www-data:www-data $newFile
}


doConvert "$1" "_s" -resize '200x200'
doConvert "$1" "_m" -resize '500x500'
doConvert "$1" "_l" -resize '1000x1000'
doConvert "$1" "_xl" -resize '1500x1500'

Damit ensteht dann z.B. mit folgenden Aufruf (wobei createimages das obige Skript bezeichnet)
createimages /var/www/images/meinbild.jpg
diese Datein im selben Verzeichnis wie im Aufruf (hier /var/www/images/)
-rw-r--r-- 1 www-data www-data 2613955 Dez  9 10:59 meinbild.jpg
-rw-r--r-- 1 www-data www-data  153301 Dez 16 12:37 meinbild_l.jpg
-rw-r--r-- 1 www-data www-data   46710 Dez 16 12:37 meinbild_m.jpg
-rw-r--r-- 1 www-data www-data   13254 Dez 16 12:37 meinbild_s.jpg
-rw-r--r-- 1 www-data www-data  363205 Dez 16 12:37 meinbild_xl.jpg
{{ message }}

{{ 'Comments are closed.' | trans }}