ImageMagick: identificar falha ao identificar imagens XWD

1

Meu objetivo é fazer uma captura de tela de todos os menus, independentemente da dica de ferramenta ou dos menus suspensos do X window, incluindo o menu de roda dentada no Ubuntu, por exemplo, e anote-os em outra ferramenta de desenho como o Shutter. :

E a maneira como faço isso fora do Shutter (porque na verdade não vai pegar esse menu, mesmo que seja propaganda disso), use xwd para pegar a janela raiz inteira, convertê-la em um arquivo PNG , carregue-o no obturador e corte-o. Esforço muito demorado para fazer isso, mas tem funcionado até agora.

No Ubuntu:

drunkard@norehab:~$ lsb_release -r -i
Distributor ID: Ubuntu
Release:    17.04

Eu tiro uma imagem completa usando xwd :

drunkard@norehab:~$ xwd -root -out /tmp/xwd.tmp.6821
drunkard@norehab:~$ file /tmp/xwd.tmp.6821
/tmp/xwd.tmp.6821: XWD X Window Dump image data, "xwdump", 3840x1215x24

Encontrei o erro durante a conversão do formato XWD para PNG:

drunkard@norehab:~$ 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.

Eu tenho esta versão de identificar:

drunkard@norehab:~$ file /usr/bin/identify
/usr/bin/identify: symbolic link to /etc/alternatives/identify
drunkard@norehab:~$ readlink -f /etc/alternatives/identify
/usr/bin/identify-im6.q16
drunkard@norehab:~$ apt-file search /usr/bin/identify-im6.q16
imagemagick-6.q16: /usr/bin/identify-im6.q16
imagemagick-6.q16hdri: /usr/bin/identify-im6.q16hdri
drunkard@norehab:~$ dpkg --listfiles imagemagick-6.q16 | grep identify
/usr/bin/identify-im6.q16
/usr/share/man/man1/identify-im6.q16.1.gz
drunkard@norehab:~$ 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 <[email protected]>
Original-Maintainer: ImageMagick Packaging Team <[email protected]>
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

Mas identificar não pode identificá-lo:

drunkard@norehab:~$ identify /tmp/xwd.tmp.6821
identify-im6.q16: no decode delegate for this image format '6821' @ error/constitute.c/ReadImage/504.

Isso costumava funcionar.

    
por bgoodr 07.10.2017 / 17:48

2 respostas

1

Uma maneira fácil de contornar essa possível limitação de imagemagick é alterar levemente sua técnica para capturar uma captura de tela. Em vez de usar sua técnica atual de 2 etapas:

  1. Agarre a captura de tela com xwd
  2. Converta com imagemagick

use um 'pipe' para tornar o processo um único comando :

xwd -root | convert xwd:- test.png

Isso funcionou muito bem no meu sistema e contornará o problema que você enfrentou. Uma captura de tela de mim mesmo digitando esta resposta (cortada um pequeno post de captura de tela) usando esta técnica:

Existem muitas outras ideias para utilizar xwd para esse fim nas referências abaixo ...

Referências:

por andrew.46 14.10.2017 / 01:39
0

Fornecendo uma extensão de arquivo .xwd :

drunkard@norehab:~$ cp /tmp/xwd.tmp.6821 /tmp/xwd.tmp.6821.xwd
drunkard@norehab:~$ 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

Então, isso costumava funcionar sem exigir uma extensão de arquivo .xwd . Então eu considero isso um bug, ou um erro de usuário em minhas expectativas de que deveria ter funcionado, mas não é o ponto inteiro de identify para identificar o conteúdo da imagem independentemente da nomenclatura do arquivo ?

    
por bgoodr 07.10.2017 / 17:49