Ich benutze ImageMagick 6.7.7-10 2017-07-31 Q16 auf Ubuntu 14.04, durch Wand 0.4.4, Python 3.4.3 und Django 1.11. Ich versuche ein JPG-Thumbnail einer PDF-Datei zu erstellen.Fehler beim Konvertieren von PDF in JPG mit Hilfe von Zauberstab, Imagemagick und Django
Auf der Kommandozeile kann ich dies tun, ohne Fehler:
convert -thumbnail x300 -background white -alpha remove Lucy.pdf[0] output_thumbnail.jpg
Aber wenn ich versuche Zauberstab auf das gleiche Bild zu verwenden, bekomme ich diesen Fehler:
Traceback (most recent call last):
File "/home/mark/python-projects/memorabilia-project/memorabilia/models.py", line 24, in make_thumb
pages = Image(blob = b)
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/image.py", line 2742, in __init__
self.read(blob=blob, resolution=resolution)
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/image.py", line 2822, in read
self.raise_exception()
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/resource.py", line 222, in raise_exception
raise e
wand.exceptions.MissingDelegateError: no decode delegate for this image format `' @ error/blob.c/BlobToImage/367
Ich sah die delegates.xml-Datei für ImageMagic in/etc, und es gibt Einträge für PDF-Dateien.
Vielen Dank für alle Vorschläge, wie Sie diese Umwandlung mit dem Stab erhalten können.
Mark
ich einen einfachen Python-Skript aus meinem django Code gehackt Stab mit pdfs zu testen, und es gibt die gleichen Fehler. Ich habe auch getestet, ob Ghostscript im Pfad ist, und die Ergebnisse von Convert-List-Delegaten ausgedruckt.
Die Ausgabe von diesem Programm ist wie folgt. Es hat den gleichen fehlenden Delegiertenfehler. Derselbe Fehler tritt auch bei TIFF-Dateien auf, aber nicht bei JPG-Dateien (die erste Testdatei ist ein JPG und der Code hat die Datei verarbeitet und das Miniaturbild erstellt). Das Programm druckt auch die Version von GS, die 9,10 ist, so dass ist von dem Programm, und es druckt die Delegierten gefunden, die PDF-Dateien enthalten .:
python thumbs.py
main
test_delegate
Path: /etc/ImageMagick/delegates.xml
Delegate Command
-------------------------------------------------------------------------------
blender => "blender" -b "%i" -F PNG -o "%o""\n"convert" -concatenate "%o*.png" "%o"
cdr => "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o"
cgm => "ralcgm" -d ps -oC < "%i" > "%o" 2> "%Z"
dng:decode => "ufraw-batch" --silent --create-id=also --out-type=png --out-depth=16 "--output=%u.png" "%i"
dot => "dot" -Tsvg "%i" -o "%o"
dvi => "dvips" -q -o "%o" "%i"
eps<=>pdf "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 "-sDEVICE=pdfwrite" "-sOutputFile=%o" "-f%i"
eps<=>ps "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i"
fig => "fig2dev" -L ps "%i" "%o"
hpg => "hp2xx" -q -m eps -f `basename "%o"` "%i"; mv -f `basename "%o"` "%o"
hpgl => "if [ -e hp2xx -o -e /usr/bin/hp2xx ]; then hp2xx -q -m eps -f `basename "%o"` "%i"; mv -f `basename "%o"` "%o"; else echo "You need to install hp2xx to use HPGL files with ImageMagick."; exit 1; fi"
htm => "html2ps" -U -o "%o" "%i"
html => "html2ps" -U -o "%o" "%i"
https => "curl" -s -k -o "%o" "https:%F"
ilbm => "ilbmtoppm" "%i" > "%o"
man => "groff" -man -Tps "%i" > "%o"
miff<= show "/usr/bin/display" -delay 0 -window-group %[group] -title "%l " "ephemeral:%i"
mpeg:decode => "ffmpeg" -v -1 -i "%i" -vframes %S -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"
pdf<=>eps "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=epswrite" "-sOutputFile=%o" "-f%i"
pdf<=>ps "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i"
pnm<= ilbm "ppmtoilbm" -24if "%i" > "%o"
pov => "povray" "+i%i" -D0 "+o%o" +fn%q +w%w +h%h +a -q9 "-kfi%s" "-kff%n";"convert" -concatenate "%o*.png" "%o"
ps<=>eps "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=epswrite" "-sOutputFile=%o" "-f%i"
ps<=>pdf "gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pdfwrite" "-sOutputFile=%o" "-f%i"
ps<= print "lpr "%i"
rgba<= rle "rawtorle" -o "%o" -v "%i"
scan => "scanimage" -d "%i" > "%o"
scanx => "scanimage" > "%o"
shtml => "html2ps" -U -o "%o" "%i"
sid => "mrsidgeodecode" -if sid -i "%i" -of tif -o "%o" > "%u"
svg => "rsvg-convert" -o "%o" "%i"
tiff<= launch "gimp" "%i"
txt<=>ps "enscript" -o "%o" "%i"
wmf => "wmf2eps" -o "%o" "%i"
0
test_gs
9.10
0
test_data/16u.jpg
b=43597, computed_sha256=0bac89048bbbcfa75ad7d9dbc84eae42ff6b30c0a057dd76e180a205d9021b8d
found image
finished successfully
test_data/Lucy.pdf
b=61053, computed_sha256=6e108603ad4f6ae2e08b3d2a419a65d3cc1f60b788e9377be15b1926892189f8
found pdf
Traceback (most recent call last):
File "thumbs.py", line 63, in <module>
main()
File "thumbs.py", line 60, in main
create_thumb(oldnames)
File "thumbs.py", line 44, in create_thumb
pages = Image(blob = bytes)
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/image.py", line 2742, in __init__
self.read(blob=blob, resolution=resolution)
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/image.py", line 2822, in read
self.raise_exception()
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/resource.py", line 222, in raise_exception
raise e
wand.exceptions.MissingDelegateError: no decode delegate for this image format `' @ error/blob.c/BlobToImage/367
Exception ignored in: <bound method Image.__del__ of <wand.image.Image: (empty)>>
Traceback (most recent call last):
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/resource.py", line 232, in __del__
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/wand/image.py", line 2767, in destroy
TypeError: object of type 'NoneType' has no len()
Vielleicht einfache Python-Code wird jemand helfen geben Sie mir eine Richtung, um dieses Problem zu lösen. Ich beginne jedoch zu vermuten, dass es einen Zauberstab im Zauberstab gibt, wenn man Byte-Arrays anstelle von Dateinamen verwendet.
Danke!
Mark
Ich bin nicht wirklich vertraut mit Wand. Ghostscript muss jedoch häufig mit anderen Schnittstellen im PATH sein, der von dieser Schnittstelle verwendet wird. Dies passiert zum Beispiel bei PHP Imagick. Sei also sicher, dass du das hast. Alternativ können Sie die delegates.xml-Datei für PS bearbeiten und den vollständigen Pfad zu Ghostscript eingeben. Beachten Sie, dass Ihr Kommandozeilenbefehl eigentlich keine korrekte Syntax ist, obwohl IM 6 ziemlich fehlerverzeihend ist. Sie sollten die Eingabe vor anderen Befehlen lesen. Es sollte richtig sein 'konvertieren Lucy.pdf [0] -thumbnail x300 -background white -alpha entfernen output_thumbnail.jpg'.Was war dein Zauberstab? – fmw42
Der Befehl wand befindet sich in der ersten Traceback-Zeile, pages = Image (blob = b). Außerdem gibt es nur eine delegates.xml auf meinem Computer, die alle Einträge für pdf und ps usw. enthält. gs befindet sich auch auf dem Pfad in/usr/bin. Ich habe auch mit einem einfachen Python-Programm überprüft, um gs zu testen. – user1045680