Seite 1 von 1

Python und Imagemagick als subprocess

Verfasst: Mittwoch 31. August 2016, 08:00
von mleopold
Hallo,

ich habe ein seltsames Problem beim Aufruf per subprocess von convert imagemagick/convert festgestellt und im imagemagick-Forum gepostet.

http://www.imagemagick.org/discourse-se ... =1&t=30379

So richtig konnte sich das dort keiner erklären und ich stehe wirklich vor einem Rätsel: Es muss irgendetwas stattfinden, das die Funktionalität von convert radikal ändert, wenn es von Windows aus aufgerufen wird. Ich habe allerdings auch keine convert-Option gefunden, die diesen Effekt auslösen und die bei der Transformation des Aufrufs entstehen könnte.

Zur Erläuterung der Notation (hier der Windowsaufruf):

Code: Alles auswählen

convert -trim -resize 512x512^> in.jpg out.jpg
-resize 512x512 rechnet ein Bild so um, dass es unter Beibehaltung der Ratio eine maximale Kantenlänge von 512 erhält. Der Operator > dahinter verhindert, dass Bilder, die kleiner sind, größer gemacht werden. Das Problem tritt nur dann auf, wenn ">" steht und nur unter Windows auf. Der Effekt ist der, dass aus dem maximal unter Windows ein minimal wird. Ich habe allerdings keinen entsprechenden Parameter von convert gefunden. Hat jemand eine Idee? Danke.

Re: Python und Imagemagick als subprocess

Verfasst: Mittwoch 31. August 2016, 09:13
von BlackJack
@mleopold: Was bedeutet denn das ^ und warum benutzt Du das beim Aufruf unter Windows und nicht beim Aufruf unter Linux? Warum unter Linux '\>' obwohl Du gar nicht über die Shell gehst, `convert` also hier auch den Backslash tatsächlich im Argument hat. Warum überhaupt zwei verschiedene Aufrufe für Windows und Linux? Da sollte unabhängig vom Betriebssystem der gleiche Code ausgeführt werden. Wenn `convert` nicht im Suchpfad für ausführbare Dateien liegt, dann würde ich den Pfad dorthin als Konstante oder Konfigurationswert/Option ausserhalb der Funktion festlegen.

Re: Python und Imagemagick als subprocess

Verfasst: Mittwoch 31. August 2016, 10:46
von mleopold
Das war tatsächlich die Lösung. Python escaped das wahscheinlich zu ^^> und dann kommt was seltsames raus.

Das mit dem Aufruf von "convert" ist seltsam. Es ist eingetragen im Pfad ausführbarer Dateien und klappt problemlos von Konsole aus, allerdings gibt es Probleme beim Aufruf via subprocess. Dann wird irgendein Windows-internes Programm oder ein Windows-interner Befehl aufgerufen, der eben über Shell nicht erscheint.

Re: Python und Imagemagick als subprocess

Verfasst: Mittwoch 31. August 2016, 11:27
von BlackJack
@mleopold: Python escaped nichts zu '^^>'. Was denn überhaupt? Das ^ ist da schlicht falsch, denn das sorgt genau für das Verhalten was Du nicht haben willst. Und bei Linux hast Du das ^ nicht angegeben und deshalb auch nicht das ungewünschte Verhalten. Lies einfach mal in der ImageMagick-Dokumentation nach was das bedeutet.

Was `convert` und des Suchpfad angeht: Der kann für verschiedene Programme unterschiedlich sein. Wie auch immer Du das Python-Programm ausführst: Dort kann %PATH% anders aussehen und deshalb ein anderes ``convert.exe`` finden. Das wäre dann ein Problem der Konfiguration des Systems und nicht eines von Python.