Markus Hartig: Frage zu ImageMagick

Hallo und einen angenehmen Sonntag in die Runde,

ich habe folgendes Problem:

über ein Formular kann eine Grafik auf den Server geladen werden, welche dann dort gespeichert wird. Das funktioniert auch einwandfrei. Allerdings soll nach dem Speichern auf dem Server die Größe des Bildes angepasst werden, und zwar so, dass die Höhe anschließend genau 48 Pixel beträgt. Die Bildbreite soll sich entsprechend anpassen.

Folgenden Aufruf verwende ich:

$convert = $PfadConvert." -geometry 100x48 ".$ThumbDatei;
    exec($convert);

$ThumbDatei ist der Pfad zum Bild,
$PfadConvert hab ich mit 'usr/bin/convert' festgelegt, aber hier bin ich mir nicht sicher. Weiss jemand, den entsprechenden Pfad? Gehostet wird das alles bei 1und1 im Bussiness 5.0-Paket.

Verschneite Grüße aus Dresden,
Markus.

  1. Hallo Markus,

    $convert = $PfadConvert." -geometry 100x48 ".$ThumbDatei;
        exec($convert);

    Deine Quelldatei fehlt im obigen Code.
    Meines Wissens nach müsste folgender Code ausreichen:

    $convert = "convert $BildDatei -resize 100x48 $ThumbDatei";
    exec($convert);

    Allerdings werden die Bilder so auf maximal 100 Pixel Breite und maximal 48 Pixel Höhe skaliert, du scheinst sie aber ausschließlich maximal 48 Pixel hoch zu haben wollen, und dazu brauchst du folgenden Code:

    $convert = "convert $BildDatei -resize x48 $ThumbDatei";
    exec($convert);

    Falls es so nicht klappt, sollte es mit "/usr/bin/convert" statt "convert" funktionieren.
    Ich denke irgendwie, dass dein Code aber trotzdem nicht funktionieren wird, denn die exec()-Funktion ist im PHP Safe Mode deaktiviert und dementsprechend wirst du keine externen Programme wie z.B. convert aufrufen können. Du kannst es ja aber trotzdem mal probieren, mich würde es wundern wenn es bei den Standard-Paketen von 1und1 funktioniert.

    Ach ja: Und pass bitte auf, dass du die Variablen $BildDatei und $ThumbDatei selbst erstellst oder falls du sie vom Benutzer überliefert bekommst entsprechend überprüfst - denn über exec()-Aufrufe haben sich schon viele PHP-Programmierer eine Hintertür ins eigene System gesprengt.

    Bis dann!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hi Marc,

      vielen Dank für die ausführliche Antwort. Heute abend werde ich deine Hinweise ausprobieren.

      Vielen Dank nochmal,
      und Gruß, Markus