Come uso la riga di comando e wmctrl per rendere una finestra più grande dello schermo per ottenere uno screenshot enorme?


7

Io uso un programma che crea un'immagine grande che devo scorrere per visualizzare. Il programma non ha modo di salvare l'immagine e non ho accesso alla fonte per modificarlo. L'unico modo per ottenere l'immagine dal programma è lo screenshot. Il mio obiettivo è salvare l'immagine a dimensione intera senza dover mettere insieme i singoli screenshot.

Sto usando questo script per provare a fare uno screenshot:

#!/bin/bash
window=$(wmctrl -l | grep "Program$" | awk '{print $1}')
wmctrl -v -i -r $window -e '0,0,0,6030,5828'
wmctrl -i -a $window
import -window $window ~/Desktop/screenshot.png

Questo usa wmctrl per ottenere l'id della finestra ($ window) per una finestra chiamata "Program". Quindi tenta di ridimensionare la finestra alle dimensioni desiderate. Usa imagemagick (import) per salvare uno screenshot.png sul desktop dell'utente. Tutto questo funziona tranne il passaggio di ridimensionamento.

Posso ridimensionare la finestra usando wmctrl -r -e, ma le dimensioni maggiori delle dimensioni dello schermo non funzionano.

Sto usando Ubuntu 10.04 e Gnome Desktop. Corro due monitor, ma ho provato questo con uno di loro disabilitato.

C'è un modo per ridimensionare la finestra più grande del mio schermo per ottenere un enorme screenshot?

Seconda parte:

Grazie alla risposta di sdaau, ho provato a usare xrandr per impostare il pan di schermo, in modo da avere un desktop più grande del mio monitor.

xrandr --output LVDS --panning 2600x2500

Questo comando consente di spostare lo schermo del laptop su un desktop con dimensioni 2600x2500, anche se può mostrare solo 1440x900 contemporaneamente. Per disattivare il panning, posso usare un comando simile per impostare la dimensione totale e con gli zeri per la sezione panoramica. Questo mi restituisce il comportamento del mio portatile originale.

xrandr --fb 1440x900 --output LVDS --panning 0x0

Tutto questo è fatto con xrandr e non richiede alcuna modifica di Xorg.conf (il mio sistema Ubuntu non ha nemmeno un Xorg.conf).

La mia scheda video sembra consentire solo circa 6,5 ​​milioni di pixel, anche se le dimensioni massime sono 8192x8192. Quel massimo sembra essere il massimo per entrambe le dimensioni, ma c'è un limite al numero di pixel che possono essere disegnati, che è la larghezza moltiplicata per l'altezza.

Una volta ridimensionato lo schermo, ho provato di nuovo la sceneggiatura e ho ottenuto uno screenshot. Lo screenshot tuttavia è completamente criptato. Non sono sicuro che non sia in grado di acquisire uno screenshot di una finestra fuori schermo o se non è in grado di gestire le grandi dimensioni della finestra. Con la visualizzazione panoramica, la finestra dovrebbe pensare che sia visibile e il gestore di finestre dovrebbe pensare che sia sullo schermo. Quindi c'è un buffer di pixel da qualche parte con quei pixel al suo interno, quindi dovrebbe esserci un modo per ottenere uno screenshot.

Forse c'è un altro metodo per fare screenshot che potrebbe funzionare meglio dell'importazione.

Risposte:


1

Appena testato con import e una finestra estesa oltre / più grande della dimensione dello schermo; e sembra import catturerà un'immagine della stessa dimensione della grande dimensione della finestra - purtroppo tutti i pixel oltre le dimensioni dello schermo e tutti i pixel coperti da altre finestre saranno neri.

Quindi forse l'unico modo è usare xrandr per ingrandire le dimensioni dello schermo (come in 'screen panning') - o per utilizzare qualcos'altro che fornirà dimensioni dello schermo più grandi: ad esempio, " Come posso prendere screenshot del browser a una risoluzione più alta di quella supportata dal mio browser? - Super utente " gli appunti:

Uso Xephyr per creare una sessione X nidificata

( Xephyr è apparentemente in sudo apt-get install xserver-xephyr in Ubuntu)

Spero che questo ti aiuti,
Saluti!

Modifica: sì, xrandr lavora con il solito schermo per me (anche con import, ha solo bisogno di spazio sufficiente per un terminale per adattarsi, quindi non si sovrappone alla finestra di destinazione), basta notare la dimensione virtuale in xorg.conf (vedere "xrandr: lo schermo non può essere più grande di" ... )


Sembra che abbia pubblicato una risposta simile in gnome - Catturare schermate di tutti (o specifici) desktop virtuali / spazi di lavoro (o: finestre oltre / più grandi del desktop attuale)? - Chiedi a Ubuntu ; c'è un esempio di uso di xvfb per la sessione X annidata ...
sdaau
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.