ImageMagick: identificazione non riesce a identificare le immagini XWD

Il mio objective è quello di essere in grado di catturare uno screenshot di tutti i menu, indipendentemente dal tooltip o dal menu a tendina che cattura la finestra di X, incluso il menu del trascinatore in Ubuntu, ad esempio, in questo modo e annotarli in un altro strumento di disegno come Shutter:

screenshot1

E il modo in cui lo faccio al di fuori di Shutter (perché in realtà non prenderà quel menu, anche se è pubblicità che lo fa), è usare xwd per afferrare l’intera finestra radice, convertirlo in un file PNG, caricarlo in Shutter e poi ritagliarlo. Sforzo molto dispendioso per farlo, ma finora ha funzionato fino a poco tempo fa.

Su Ubuntu:

 [email protected]:~$ lsb_release -r -i Distributor ID: Ubuntu Release: 17.04 

Faccio uno screenshot completo usando xwd :

 [email protected]:~$ xwd -root -out /tmp/xwd.tmp.6821 [email protected]:~$ file /tmp/xwd.tmp.6821 /tmp/xwd.tmp.6821: XWD X Window Dump image data, "xwdump", 3840x1215x24 

Ho riscontrato l’errore durante la conversione da XWD al formato PNG:

 [email protected]:~$ convert /tmp/xwd.tmp.6821 /home/drunkard/screenshot.2017-10-07.08-13-55.PDT.png convert-im6.q16: no decode delegate for this image format `6821' @ error/constitute.c/ReadImage/504. convert-im6.q16: no images defined `/home/drunkard/screenshot.2017-10-07.08-13-55.PDT.png' @ error/convert.c/ConvertImageCommand/3258. 

Ho questa versione di identificare:

 [email protected]:~$ file /usr/bin/identify /usr/bin/identify: symbolic link to /etc/alternatives/identify [email protected]:~$ readlink -f /etc/alternatives/identify /usr/bin/identify-im6.q16 [email protected]:~$ apt-file search /usr/bin/identify-im6.q16 imagemagick-6.q16: /usr/bin/identify-im6.q16 imagemagick-6.q16hdri: /usr/bin/identify-im6.q16hdri [email protected]:~$ dpkg --listfiles imagemagick-6.q16 | grep identify /usr/bin/identify-im6.q16 /usr/share/man/man1/identify-im6.q16.1.gz [email protected]:~$ apt-cache --no-all-versions show imagemagick-6.q16 Package: imagemagick-6.q16 Architecture: amd64 Version: 8:6.9.7.4+dfsg-3ubuntu1.2 Multi-Arch: foreign Priority: optional Section: graphics Source: imagemagick Origin: Ubuntu Maintainer: Ubuntu Developers  Original-Maintainer: ImageMagick Packaging Team  Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 644 Provides: imagemagick, imagemagick-6.defaultquantum Depends: libc6 (>= 2.4), libmagickcore-6.q16-3 (>= 8:6.9.6.8), libmagickwand-6.q16-3 (>= 8:6.9.6.8), hicolor-icon-theme Recommends: libmagickcore-6.q16-3-extra, ghostscript, netpbm Suggests: imagemagick-doc, autotrace, cups-bsd | lpr | lprng, curl, enscript, ffmpeg, gimp, gnuplot, grads, graphviz, groff-base, hp2xx, html2ps, libwmf-bin, mplayer, povray, radiance, sane-utils, texlive-base-bin, transfig, ufraw-batch, xdg-utils Breaks: libmagickcore-dev (<< 8:6.9.2.10+dfsg-2~) Replaces: imagemagick (<< 8:6.9.2.10+dfsg-2~) Filename: pool/main/i/imagemagick/imagemagick-6.q16_6.9.7.4+dfsg-3ubuntu1.2_amd64.deb Size: 423848 MD5sum: 6f06b63767fb5e32d967e4395d4e4f98 SHA1: ba0b8af93fed0e9d1efabe56e79387f1bc4944e5 SHA256: 84ffd5f3eb1c8bdc11955c581fc98f1c1bb37eb40609ef6997c8675f1dfd29d0 Homepage: http://www.imagemagick.org/ Description-en: image manipulation programs -- quantum depth Q16 ImageMagick is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. All manipulations can be achieved through shell commands as well as through an X11 graphical interface (display). . For working with the SVG, WMF, OpenEXR, DjVu and Graphviz formats, you need to install the libmagickcore-6.q16-3-extra package. . This version of imagemagick is compiled for a channel depth of 16 bits (Q16). Description-md5: e40daf0bbbffd2b9ac49e04c8c3480fe Task: ubuntu-desktop, ubuntu-usb, print-server, kubuntu-desktop, edubuntu-desktop, edubuntu-usb, xubuntu-core, xubuntu-desktop, mythbuntu-desktop, lubuntu-desktop-share, lubuntu-gtk-desktop, lubuntu-desktop, lubuntu-qt-desktop, ubuntustudio-desktop-core, ubuntustudio-desktop, ubuntu-gnome-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop Supported: 9m N: There is 1 additional record. Please use the '-a' switch to see it 

Ma l’identificazione non può identificarlo:

 [email protected]:~$ identify /tmp/xwd.tmp.6821 identify-im6.q16: no decode delegate for this image format `6821' @ error/constitute.c/ReadImage/504. 

Questo funzionava.

Un modo semplice per aggirare questa ansible limitazione di imagemagick è di alterare leggermente la tua tecnica per catturare uno screenshot. Invece di utilizzare la tua attuale tecnica a 2 passaggi:

  1. Prendi lo screenshot con xwd
  2. Converti con imagemagick

usa un ‘pipe’ per rendere il processo un singolo comando :

 xwd -root | convert xwd:- test.png 

Questo ha funzionato magnificamente sul mio sistema e risolverà il problema che hai riscontrato. Uno screenshot di me stesso che scrive questa risposta (ritagliata un piccolo post screenshot) usando questa tecnica:

inserisci la descrizione dell'immagine qui

Ci sono molte altre idee per utilizzare xwd per questo scopo nei riferimenti seguenti …

Riferimenti:

  • HowTo: Usa xwd per gli screenshot

Dandogli un estensione .xwd :

 [email protected]:~$ cp /tmp/xwd.tmp.6821 /tmp/xwd.tmp.6821.xwd [email protected]:~$ identify /tmp/xwd.tmp.6821.xwd /tmp/xwd.tmp.6821.xwd XWD 3840x1215 3840x1215+0+0 8-bit sRGB 18.67MB 0.000u 0:00.009 

Quindi questo funzionava senza richiedere .xwd file .xwd . Quindi considero questo un bug o un errore utente nelle mie aspettative che avrebbe dovuto funzionare, ma non è il punto di identify per identificare il contenuto dell’immagine indipendentemente dalla nomenclatura dei file ?