Seite 1 von 1

ImageMagick

Verfasst: 12.04.2004 23:04
von Chrissi007
Hi,

Die Frage hat zwar jetzt nicht direkt mit php zu tun, aber Ich hoffe dass ihr mir trotzdem weiterhelfen könnt :D

Also Ich würde gerne einen eigenen Script schreiben um Bilder zu verkleinern. Ich hab ein bisschen gegoogelt und schonmal was ganz nützliches gefunden: http://www.uni-koeln.de/themen/Graphik/ ... nvert.html

Nur versteh Ich jetzt nicht genau wie Ich das ganze in ein php Script implementieren muss.

Könnte das vielleicht jemand anhand eines Beispiels erklären? Vor allen Dingen wo muss die Pfadangabe zu ImageMagick hin? :)

bild1.jpg wird in das Verzeichnis /images hochgeladen und ein Thumbnail, bild1_small.jpg (mit bsp. 150*150px), soll im selben Verzeichnis abgespeichert werden.

Verfasst: 12.04.2004 23:22
von itst
Wenn ImageMagick als Binaries installiert ist, kannst Du die Programme mit system aufrufen.

Oder Du installierst gleich die Modul-Variante.

Verfasst: 13.04.2004 18:18
von Chrissi007
Bin bei all-inkl.
Da ist das standardmäßig vorinstalliert. Ich glaub als Modul :)

php Info: www.chrissi007.de/phpinfo.php

Also mein Problem is eher wie Ich ImageMagick sagen kann, dass es ein Bild verkleinern soll.

Verfasst: 13.04.2004 18:33
von itst

Verfasst: 13.04.2004 19:36
von Chrissi007
Hmm aber wo muss Ich die "convert"-Zeile einfügen? *g* :)



Weil so kann's ja nicht stimmen: ;)

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
convert test.jpg -resize 20x20 -newimage.jpg
</body>
</html>

Verfasst: 13.04.2004 19:44
von Jensemann
itst hat geschrieben:Wenn ImageMagick als Binaries installiert ist, kannst Du die Programme mit system aufrufen.
Bei system() aber ganz vorsichtig sein keine usereingabe mit zu übergeben, generell ist die gefahr durch system() so groß das man davon abraten sollte.

Verfasst: 13.04.2004 19:49
von itst
Nunja, das ist bei jeder Aktion so, ob Backticks oder system().

Aber Jens hat schon recht.

@Chrissi: http://de3.php.net/system

Verfasst: 13.04.2004 19:55
von Jensemann
itst hat geschrieben:Nunja, das ist bei jeder Aktion so, ob Backticks oder system().
deshalb nutzt man beides nicht. sondern nutzt etwas das die argumente etwa als array und nich in shell form annimmt, also etwas das keine shell ausführt.

in c würde ich fork() und dann eine der exec() calls nehmen, aber PHP schockiert mich grade, es gibt ja nur funktionen die ne shell ausführen. Also immer http://de2.php.net/manual/de/function.e ... ellcmd.php verwenden.

Verfasst: 13.04.2004 20:15
von itst
Bzw. keine Benutzereingaben direkt benutzen.

Im Fall eines Resize brauchts ja nicht viel, nur den Dateinamen (den kennt das System, keine Benutzereingabe) und die neue Größe. Mit einem intval() sowie einen Sanity-Check (>0, < 1600) wäre man hier schon safe.

Verfasst: 13.04.2004 22:48
von Chrissi007
Danke für eure Hilfe. :D

Hab jetzt folgenden Script geschrieben:

Code: Alles auswählen

<?php
system("convert bild1.jpg -resize 1024x768 -bild1_small.jpg");
?>
Der Script wird auch abgearbeitet, nur erscheint kein "bild1_small.jpg" im ftp Verzeichnis. - Was hab Ich falsch gemacht? :(