2015-10-21 3 views
0

J'ai un programme, qui enregistre une toile dans un fichier postscript. Le programme ouvre ensuite le fichier avec IrfanView, où je peux l'enregistrer manuellement en tant que .png et puis je peux exécuter une autre fonction à partir de python, qui fait une autre opération avec elle et l'enregistre à nouveau en tant que .png. Ma question est de savoir s'il existe un moyen de supprimer le bit manuel du milieu (où je dois cliquer sur le bouton enregistrer en tant que) ou si l'enregistrement de IrfanView peut se faire via le code python? Jusqu'à présent, j'ai découvert que je ne peux pas enregistrer la toile et tout ce qui s'y trouve (im utilisant des tortues) ne peut être enregistré en utilisant postscript.Utiliser python pour effectuer des actions dans la fenêtre cmd

La conversion de postscript en png ou jpeg à partir de python semble également être un peu difficile.

Note: Essentiellement, j'utiliser Irfan pour faire le post-scriptum à la conversion .png, mais je voudrais cacher cette étape du processus de l'utilisateur, donc ce serait bien si le programme pourrait le faire pour moi.

Nouvelle note: J'ai essayé d'utiliser le module subprocess python pour faire un appel à la cmd et l'utiliser pour convertir, mais chaque fois que je tente d'exécuter le .Popen ou la fonction .call-je obtenir une erreur - Accès refusé ou fichier introuvable, de toute façon les commandes ne veulent pas s'exécuter depuis le programme python. J'ai même essayé d'ouvrir juste un fichier de python, à travers le cmd seulement pour obtenir une erreur (les mêmes œuvres de commande lorsque tapés directement dans le cmd):

WindowsError: [Error 193] %1 is not a valid Win32 application

+0

Y at-il une option de ligne de commande? –

+0

J'ai vu qu'il y a quelques options de ligne de commande pour convertir de ps en png en utilisant ImageMagick/GhostScript, mais je ne suis pas sûr de savoir comment les exécuter à partir du code? – Oliver

+0

http://stackoverflow.com/questions/28856297/converting-postscript-to-an-image - J'ai vu ça, mais comment puis-je l'exécuter depuis mon script python? – Oliver

Répondre

0

En supposant que vous avez un fichier Postscript nommé saved.ps que vous voulez convertir en un fichier png avec Ghostscript en utilisant le périphérique pngalpha, vous pouvez faire:

gspath = "/path/to/gs" # would be gspath="c:\path\to\gswin32c" on Windows... 
infile = "saved.ps" 
outfile = "output.png" 
gs = subprocess.Popen(["gs", "-o", "output.png", "-sDEVICE=pngalpha", 
       "-dBatch", infile], executable=gspath, 
       stdout=subprocess.PIPE, stderr = subprocess.PIPE) 
out, err = gs.communicate() 

if gs.returncode != 0: 
    # do error processing, at least display out and err 
+0

Cela fonctionnera-t-il sur un périphérique Windows? J'ai essayé de le faire en utilisant ImageMagick 'convert', mais j'ai rencontré un problème différent - http://stackoverflow.com/questions/33282658/imagemagick-conversion-from-ps-to-png-run-from- python-invalid-param – Oliver

+1

@Oliver tes fonctionne bien sur une machine windows – joojaa