Zur Navigation

ImageMagick Version über htaccess ändern? [2]

11 Horst_Braun

Ja ich meine "new Imagick". Also wird die Erweiterung benutzt. Gibt es davon auch Updates?

Den Code-Abschnitt kann ich dir nicht einfach zukommen lassen. Das sind riesige Dateien, welche unzählige "convert" beinhalten.

In diesem Video kannst du aber das Problem ganz gut erkennen glaube ich:
http://www.servietten-deko.de/videos/reason.mp4

Mir kommt es so vor als ob der schon den zweiten "Convert" Vorgang startet bevor der erste fertig ist.

MfG

11.03.2015 19:46

12 Jörg Kruse

Zitat von Horst_Braun
Ja ich meine "new Imagick". Also wird die Erweiterung benutzt.

Vielleicht. Wenn an anderer Stelle convert über system() aufgerufen wird, deutet das daraufhin, dass das Script die Imagick-Extension nur nutzt, wenn vorhanden.

Du kannst - wie gesagt - mittels phpinfo() herausfinden, ob die Extension bei dir läuft

Gibt es davon auch Updates?

Ja, aber die ändern nichts an der ImageMagick-Version.

Aber möglicherweise liegt der Fehler auch gar nicht an ImageMagick, sondern an der Extension oder gar an dem Script selbst?

Den Code-Abschnitt kann ich dir nicht einfach zukommen lassen. Das sind riesige Dateien, welche unzählige "convert" beinhalten.

Es reicht auch schon eine Zeile. Es geht ja darum zu wissen, ob convert mit oder ohne Pfad aufgerufen wird.

In diesem Video kannst du aber das Problem ganz gut erkennen glaube ich:
http://www.servietten-deko.de/videos/reason.mp4

Mir kommt es so vor als ob der schon den zweiten "Convert" Vorgang startet bevor der erste fertig ist.

Ich kann das jetzt nicht so nachvollziehen, weil ich diese Benutzeroberfläche nicht kenne. Aber deine Fehlerbeschreibung hört sich doch eher danach an, als ob der Fehler auch im Script selbst liegen könnte. Der Ablauf der einzelnen Convert-Vorgänge wird ja vom Script gesteuert.

11.03.2015 21:52

13 Horst_Braun

Hallo,

hier ein Beispiel:
system("convert -density 400 -units pixelsperinch ".WWW_ROOT.IMAGES_URL.'customized_tshirts/'.$fileName." ".WWW_ROOT.IMAGES_URL.'customized_tshirts/'.$filename_new);

Ich hab mittlerweile auch das Gefühl, dass es sich um einen Fehler im Script handelt. Wenn ich nämlich drei Bilder einfügen und diese klein lasse, dann geht das. Wenn diese zu groß sind, dann geht das nicht mehr.

11.03.2015 23:28

14 Jörg Kruse

Vorausgesetzt, die imagick-Extension wird nicht genutzt, könnte man bei den system() Aufrufen die Pfade entsprechend ergänzen:

system("/usr/bin/ImageMagick_6.7.1/convert -density 400 [...]")

... was aber wohl nicht praktikabel ist bei der Anzahl der Aufrufe (und auch nicht zielführend, wenn der Fehler im Script liegt)

Ich hab mittlerweile auch das Gefühl, dass es sich um einen Fehler im Script handelt. Wenn ich nämlich drei Bilder einfügen und diese klein lasse, dann geht das. Wenn diese zu groß sind, dann geht das nicht mehr.

Würde ich bei dem Autor des Scripts als Bug melden. Vielleicht gibt es da dann ja mal ein Bugfix. Und falls doch eine Version von ImageMagick oder Imagick den Fehler (mit)verschuldet, sollte auch dies der Programmierer besser einschätzen können.

12.03.2015 11:28

15 Horst_Braun

Hallo Jörg (Gott der Programmierung),

ich hab jetzt alle "convert" mit "/usr/bin/ImageMagick_6.7.1/convert" ersetzt.

Und es geht!!! Juhu.

Vielen vielen Dank.

Das System läuft jetzt viel schneller und ohne Abstürze.

Vielen Dank. Genial.

Ein Problem hab ich noch. Aber dazu dann gleich ein neues Thema.

MfG

12.03.2015 18:48

16 Horst_Braun

Jetzt muss ich doch nochmal etwas dazu fragen.

Wenn ich nun statt ImageMagick graphicsmagick benutzen möchte, muss ich dann ebenfalls nur den Pfad ändern oder noch irgendwie starten bzw.. initialisieren?

Vielen Dank.

12.03.2015 21:53

17 Jörg Kruse

Die Frage ist, inwieweit GraphicsMagick kompatibel ist zu ImageMagick.

Der FAQ von GraphicsMagick zufolge soll dieses vollständig kompatibel sein zu ImageMagick 5.5.2. Allerdings seien neuere Versionen von ImageMagick nicht mehr kompatibel zu der Version von 2002, so dass es inzwischen Unterschiede geben könnte. Falls keine inkompatiblen Optionen verwendet werden, sollte es aber ausreichen, den Pfad des Programms convert anzupassen.

In deinem Codebeispiel werden z.B. die Optionen -density und -units verwendet. Diese finden sich auch im Manual von GraphicsMagick, so dass dieser Aufruf von convert auch mit GraphicsMagick funktionieren sollte

13.03.2015 10:17 | geändert: 13.03.2015 10:19

18 Horst_Braun

Also muss ich das hier nicht ändern?

$image = new Imagick('image.jpg');

MfG

13.03.2015 10:19

19 Jörg Kruse

Für GraphicsMagick gibt es die Gmagick-Extension:

http://php.net/manual/de/book.gmagick.php

Allerdings ist fraglich, ob diese Extensions bei dir überhaupt aktiviert sind (weiter oben hatte ich ja geschrieben, das du dies mit phpinfo() überprüfen kannst)

Die Aufrufe über system() und die Verwendung der Klasse Imagick sind zwei alternative Methoden, um auf die Tools von ImageMagick zu nutzen. Ich hatte ja schon an anderer Stelle geschrieben, dass das Script vermutlich überprüft, ob die Imagick-Extension aktiviert ist. Falls ja, wird diese verwendet, falls nicht, werden stattdessen mittels system() die Tools von ImageMagick direkt aufgerufen. In deinem Script scheint letzteres der Fall zu sein, sonst hätten die Anpassungen des Pfades ja auch keinen Effekt gehabt. Die Imagick-Klasse wird demzufolge gar nicht genutzt.

Das sind zwar alles nur Vermutungen, da ich ja keinen Einblick in das Script habe, aber es wäre schon sehr merkwürdig, wenn sowohl die PHP-Extension als auch der Zugriff über system() durcheinander genutzt würden.

13.03.2015 10:36

20 Horst_Braun

So ich nochmal. Die Gmagick-Extension ist nicht drauf, aber die ImageMagick läuft.

Heute geht wieder nichts mehr: Ich habe die Änderung zurück genommen. Scheinbar wird wirklich nur die Extension genutzt.

Ich blick nicht mehr durch.

Wenn mehrere gleichzeitig ein Bild erstellen, dann hängt es total. Muss da irgendwas geschlossen werden?

13.03.2015 10:58 | geändert: 13.03.2015 11:04