Nachdem unter Eoan identify aus Imagemagick kaputt ist, frage ich mich wie man die Auflösung eines Fotos noch bestimmen kann, primär geht es um Fotos im RAW-Format.
Eoan: Auflösung von (RAW-)Fotos bestimmen
Anmeldungsdatum: Beiträge: 3453 |
|
||
Projektleitung
Anmeldungsdatum: Beiträge: 12801 |
Hast Du mal GraphicsMagick (Package graphicsmagick) versucht? Es gibt sogar Paket graphicsmagick-imagemagick-compat, das kompatible Kommandos installiert, so dass Du nix oder wenig ändern musst. |
||
Anmeldungsdatum: Beiträge: 11176 Wohnort: München |
Für Raw-Dateien kann man libraw einspannen: https://forum.ubuntuusers.de/post/9121788/ Für "normale" Pixel-Bilder bietet sich z.B. das Image-Modul aus pillow (https://packages.ubuntu.com/eoan/python3-pil) an:
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
So, jetzt habe ich mir mit einem Tastendruck einen langen mühsam zusammengeschriebenen Text gelöscht. Ich fasse jetzt gekürzt zusammen, weil ich sowieso in meinem Script testen muss, was nun nicht mehr funktioniert. Problem dabei ist, das Bash-Script hat tausende Zeilen und hunderten Workarounds für Sonderfälle inkl. Scans, die irgendwann mal vorkamen, speziell in der Frühzeit der digitalen Fotografie mit kaputten Metadaten. Kurz gesagt, ich bräuchte unter Eoan ein funktionierendes ImageMagick, speziell für RAW und identify. Um es in mein Bash-Script integrieren zu können, brauche ich einen Einzeiler, manchmal ist identify in einer Pipe. Ich muss mal schauen, ob ich bei der Auflösung mit den EXIF-Metadaten weiter komme. RAW-Fotos sollten immer Exif-Daten haben und wenn sie fehlen, sollte es meistens jpg sein. Bei TIFF habe ich dann vermutlich aber ein Problem, muss man schauen, ob identify mit TIFF noch funktioniert. Vor allem muss ich mir was überlegen, wann ich unbedingt identify brauche und wann exiftool benötigt wird. Das ist eine konzeptionelle Sache mit der ich nicht gerechnet habe. Interessant ist, dass es dcraw noch in EOAN gibt.
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Ich habe mitterlweile eine andere Idee um das fehlende ufraw-batch unter Eoan in den Griff zu bekommen. Jedenfalls habe ich schon gefunden, dass es für mich nicht reicht, einfach das ufraw-batch aus Disco zu installieren. Es gibt auch Probleme mit composite, habe aber nur Fehlermeldungen in meinem Script gesehen und konnte nicht testen. Wenn ich die Stelle auswendig richtig im Kopf habe, dann sind da aber keine RAW-Dateien betroffen. Wenn es nun dcraw weiter in Eoan gibt, dann wäre es ja eine Möglichkeit Imagemagick zu sagen, es soll dcraw statt ufraw zu verwenden. Es gibt da teilweise sehr alte Threads dazu und Leute, die berichten, dass sie Probleme damit haben. Man muss dazu delegates.xml editieren: cat /etc/ImageMagick-6/delegates.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE delegatemap [ <!ELEMENT delegatemap (delegate)+> <!ATTLIST delegatemap xmlns CDATA #FIXED ''> <!ELEMENT delegate EMPTY> <!ATTLIST delegate xmlns CDATA #FIXED '' command CDATA #REQUIRED decode NMTOKEN #IMPLIED encode NMTOKEN #IMPLIED mode NMTOKEN #IMPLIED spawn NMTOKEN #IMPLIED stealth NMTOKEN #IMPLIED> ]> <!-- Delegate command file. Commands which specify decode="in_format" encode="out_format" specify the rules for converting from in_format to out_format. Use these rules to translate directly between formats. Commands which specify only decode="in_format" specify the rules for converting from in_format to some format that ImageMagick automatically recognizes. Use these rules to decode formats. Commands which specify only encode="out_format" specify the rules for an "encoder" which may accept any input format. The substitution rules are as follows: %a authentication passphrase %b image file size in bytes %g image geometry %h image rows (height) %i input image filename %# input image signature %m input image format %o output image filename %p page number %q input image depth %s scene number %u unique temporary filename %w image columns (width) %x input image x resolution %y input image y resolution Set option delegate:bimodal=true to process bimodal delegates otherwise they are ignored. If stealth="True" the delegate is not listed in user requested "-list delegate" listings. These are typically special internal delegates. If spawn="True", ImageMagick does not wait for the delegate to finish, nor will it read any output image. --> <delegatemap> <delegate decode="bpg" command=""bpgdec" -b 16 -o "%o.png" "%i"; /bin/mv "%o.png" "%o""/> <delegate decode="png" encode="bpg" command=""bpgenc" -b 12 -q "%~" -o "%o" "%i""/> <delegate decode="blender" command=""blender" -b "%i" -F PNG -o "%o""\n"convert" -concatenate "%o*.png" "%o""/> <delegate decode="browse" stealth="True" spawn="True" command=""xdg-open" https://imagemagick.org/; /bin/rm "%i""/> <delegate decode="cdr" command=""uniconvertor" "%i" "%o.svg"; /bin/mv "%o.svg" "%o""/> <delegate decode="cgm" command=""uniconvertor" "%i" "%o.svg"; /bin/mv "%o.svg" "%o""/> <delegate decode="https" command=""curl" -s -k -L -o "%o" "https:%M""/> <delegate decode="doc" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="docx" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="dng:decode" command=""ufraw-batch" --silent --create-id=also --out-type=png --out-depth=16 "--output=%u.png" "%i""/> <delegate decode="dot" command='"dot" -Tsvg "%i" -o "%o"' /> <delegate decode="dvi" command=""dvips" -sstdout=%%stderr -o "%o" "%i""/> <delegate decode="dxf" command=""uniconvertor" "%i" "%o.svg"; /bin/mv "%o.svg" "%o""/> <delegate decode="edit" stealth="True" command=""/etc/alternatives/x-terminal-emulator" -title "Edit Image Comment" -e vi "%o""/> <delegate decode="eps" encode="pdf" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 "-sDEVICE=pdfwrite" "-sOutputFile=%o" "-f%i""/> <delegate decode="eps" encode="ps" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ps2write" "-sOutputFile=%o" "-f%i""/> <delegate decode="fig" command=""uniconvertor" "%i" "%o.svg"; /bin/mv "%o.svg" "%o""/> <delegate decode="hpg" command=""hp2xx" -sstdout=%%stderr -m eps -f `basename "%o"` "%i"; /bin/mv -f `basename "%o"` "%o""/> <delegate decode="hpgl" command=""hp2xx" -sstdout=%%stderr -m eps -f `basename "%o"` "%i"; /bin/mv -f `basename "%o"` "%o""/> <delegate decode="htm" command=""html2ps" -U -o "%o" "%i""/> <delegate decode="html" command=""html2ps" -U -o "%o" "%i""/> <delegate decode="ilbm" command=""ilbmtoppm" "%i" > "%o""/> <delegate decode="jpg" encode="lep" mode="encode" command=""lepton" "%i" "%o""/> <delegate decode="jxr" command="/bin/mv "%i" "%i.jxr"; "JxrDecApp" -i "%i.jxr" -o "%o.pnm"; /bin/mv "%i.jxr" "%i"; /bin/mv "%o.pnm" "%o""/> <delegate decode="lep" mode="decode" command=""lepton" "%i" "%o""/> <delegate decode="miff" encode="show" spawn="True" command=""display" -immutable -delay 0 -title "%M" "%i""/> <delegate decode="miff" encode="win" stealth="True" spawn="True" command=""display" -immutable -delay 0 -title "%M" "%i""/> <delegate decode="mpeg:decode" command=""ffmpeg" -nostdin -v -1 -i "%i" -vframes %S -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%u""/> <delegate decode="odt" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="pcl:cmyk" stealth="True" command=""pcl6" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate decode="pcl:color" stealth="True" command=""pcl6" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ppmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate decode="pcl:mono" stealth="True" command=""pcl6" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pbmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate decode="pdf" encode="eps" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sPDFPassword="%a" "-sDEVICE=eps2write" "-sOutputFile=%o" "-f%i""/> <delegate decode="pdf" encode="ps" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ps2write" -sPDFPassword="%a" "-sOutputFile=%o" "-f%i""/> <delegate decode="png" encode="webp" command=""cwebp" -quiet %Q "%i" -o "%o""/> <delegate decode="pnm" encode="ilbm" mode="encode" command=""ppmtoilbm" -24if "%i" > "%o""/> <delegate decode="bmp" encode="jxr" command="/bin/mv "%i" "%i.bmp"; "JxrEncApp" -i "%i.bmp" -o "%o.jxr"; /bin/mv "%i.bmp" "%i"; /bin/mv "%o.jxr" "%o""/> <delegate decode="bmp" encode="wdp" command="/bin/mv "%i" "%i.bmp"; "JxrEncApp" -i "%i.bmp" -o "%o.jxr"; /bin/mv "%i.bmp" "%i"; /bin/mv "%o.jxr" "%o""/> <delegate decode="ppt" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="pptx" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="ps" encode="prt" command='"lpr" "%i"'/> <delegate decode="ps:alpha" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/> <delegate decode="ps:cmyk" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/> <delegate decode="ps:color" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pnmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/> <delegate decode="ps" encode="eps" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=eps2write" "-sOutputFile=%o" "-f%i""/> <delegate decode="ps" encode="pdf" mode="bi" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pdfwrite" "-sOutputFile=%o" "-f%i""/> <delegate decode="ps" encode="print" mode="encode" command="lpr "%i""/> <delegate decode="ps:mono" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pbmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/> <delegate decode="shtml" command=""html2ps" -U -o "%o" "%i""/> <delegate decode="sid" command=""mrsidgeodecode" -if sid -i "%i" -of tif -o "%o" > "%u""/> <delegate decode="svg" command=""rsvg-convert" -o "%o" "%i""/> <delegate decode="svg:decode" stealth="True" command=""inkscape" "%s" --export-png="%s" --export-dpi="%s" --export-background="%s" --export-background-opacity="%s" > "%s" 2>&1"/> <delegate decode="tiff" encode="launch" mode="encode" command=""gimp" "%i""/> <delegate decode="wdp" command="/bin/mv "%i" "%i.jxr"; "JxrDecApp" -i "%i.jxr" -o "%o.bmp"; /bin/mv "%i.jxr" "%i"; /bin/mv "%o.bmp" "%o""/> <delegate decode="webp" command=""dwebp" -pam "%i" -o "%o""/> <delegate decode="xls" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="xlsx" command=""soffice" --convert-to pdf -outdir `dirname "%i"` "%i" 2> "%u"; /bin/mv "%i.pdf" "%o""/> <delegate decode="xps:cmyk" stealth="True" command=""gxps" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=bmpsep8" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate decode="xps:color" stealth="True" command=""gxps" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ppmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate decode="xps:mono" stealth="True" command=""gxps" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pbmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/> <delegate encode="mpeg:encode" stealth="True" command=""ffmpeg" -nostdin -v -1 -i "%M%%d.jpg" "%u.%m" 2> "%u""/> </delegatemap> Was man da genau machen muss, bin ich mir noch nicht sicher, man findet unterschiedliches. Vgl. zB http://www.kevinludlow.com/blog/2706/Configuring_ImageMagick_RAW_Delegates_with_DCRAW_and_UFRAWBatch/ |
||
Anmeldungsdatum: Beiträge: 11176 Wohnort: München |
IMHO wäre es sinnvoller auf Imagemagick 7 zu gehen (muss man vermutlich selber bauen - https://linuxconfig.org/how-to-install-imagemagick-7-on-ubuntu-18-04-linux) - das unterstützt soweit ich das gesehen habe die moderne libraw (also libraw-dev als Build-Dependency installieren, bevor man es konfiguriert und baut). |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 3453 |
Daran habe ich auch schon gedacht, aber ich habe zur Zeit viel zu viele Baustellen bzgl. Imagemagick und meinem Script. Eine delegates.xml, die mit dcraw funktioniert, sollte IMHO leichter zu schaffen sein, habe noch nichts probiert, nur irgendwo gelesen, dass man den vollen Pfad angeben muss, was bei http://www.kevinludlow.com/blog/2706/Configuring_ImageMagick_RAW_Delegates_with_DCRAW_and_UFRAWBatch/ nicht der Fall ist. Dort findet man: <delegate decode="dng:decode" command=""dcraw" -c -q 3 -H 5 -w "%i" | "/opt/libjpeg-turbo/bin/cjpeg" -quality 100 > "%o""/> Man muss sich mal die ganzen Optionen ansehen, die da vorgeschlagen sind. Meine Hoffnung geht in die Richtung, dass die Probleme unter 20.04 gelöst sind.
Bis April komme ich höchstwahrscheinlich durch, wenn "normale" Digitalkamera-Fotos funktionieren. Ich bin jetzt am prüfen, warum ich mit deinem Sript bei GPS (von seahawk) Fehlermeldungen bekomme, habe mir aber den Ast abgesägt, weil ich beim Testen die cache-Datei irrtümlich löschte. Sinnvoll ist es nur, wenn ich in der Kommandozeile teste und mein Script weglasse. Ich muss da Schritt für Schritt durch, warum mein Script manchmal durchläuft und dann wieder nicht. Vermutlich muss ich bis morgen warten um wieder 50000 Trackpoints berechnen zu lassen. Daher will ich das Kompilieren von IM möglichst vermeiden, bevor dann gar nichts mehr funktioniert. |