web-dev-qa-db-ja.com

コマンドラインとwmctrlを使用してウィンドウを画面より大きくして巨大なスクリーンショットを取得するにはどうすればよいですか?

私は表示するためにスクロールしなければならない大きな画像を作成するプログラムを使用しています。プログラムには画像を保存する方法がなく、ソースにアクセスして画像を変更することもできません。プログラムから画像を取得する唯一の方法は、スクリーンショットを使用することです。私の目標は、個々のスクリーンショットをつなぎ合わせる必要なしに、フルサイズの画像を保存することです。

このスクリプトを使用して、スクリーンショットを撮ってみます。

#!/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

これは、wmctrlを使用して、「Program」という名前のウィンドウのウィンドウID($ window)を取得します。次に、ウィンドウのサイズを目的のサイズに変更しようとします。 imagemagick(インポート)を使用して、ユーザーのデスクトップにscreenshot.pngを保存します。サイズ変更ステップを除いて、これはすべて機能します。

Wmctrl -r -eを使用してウィンドウのサイズを変更できますが、画面サイズより大きいサイズは機能しません。

Ubuntu10.04とGnomeデスクトップを使用しています。 2台のモニターを実行していますが、そのうちの1台を無効にしてこれを試しました。

画面よりも大きいウィンドウのサイズを変更して、巨大なスクリーンショットを取得する方法はありますか?

パートII:

Sdaauの回答のおかげで、xrandrを使用して画面のパンを設定し、モニターよりもデスクトップを大きくしてみました。

xrandr --output LVDS --panning 2600x2500

このコマンドは、一度に1440x900しか表示できない場合でも、ラップトップの画面を2600x2500サイズのデスクトップ上でパンします。パンをオフにするには、同様のコマンドを使用して、パンセクションの合計サイズとゼロを設定します。これにより、元のラップトップの表示動作が元に戻ります。

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

これはすべてxrandrで行われ、Xorg.confを変更する必要はありません(私のUbuntuシステムにはXorg.confさえありません)。

私のビデオカードは、最大サイズが8192x8192であるにもかかわらず、約650万ピクセルしか許可していないようです。その最大値はどちらの次元でも最大値のようですが、描画できるピクセル数には制限があります。これは、幅に高さを掛けたものです。

画面のサイズを変更したら、スクリプトをもう一度試し、スクリーンショットを取得しました。ただし、スクリーンショットは完全にスクランブルされています。画面外のウィンドウのスクリーンショットを撮ることができないのか、それともウィンドウの大きなサイズを処理できないのかはわかりません。パン表示を使用すると、ウィンドウは表示されていると見なし、ウィンドウマネージャーは画面上にあると見なす必要があります。したがって、それらのピクセルを含むピクセルバッファがどこかにあるので、スクリーンショットを取得する方法があるはずです。

スクリーンショットを撮るには、インポートよりもうまくいく別の方法があるかもしれません。

7
Mnebuerquo

importと、画面サイズを超えて拡張されたウィンドウでテストされました。 importは、大きなウィンドウサイズと同じサイズの画像をキャプチャするようです。残念ながら、画面サイズを超えるすべてのピクセル、および他のウィンドウで覆われているすべてのピクセルは黒になります。

したがって、おそらく唯一の方法は、xrandrを使用して画面サイズを拡大することです(「画面パンニング」のように)-または、より大きな画面サイズを提供する他の何かを使用することです:たとえば、 " どうすればよいですか?私のブラウザがサポートするよりも高い解像度でブラウザのスクリーンショットを撮りますか?-スーパーユーザー "メモ:

Xephyrを使用して、ネストされたXセッションを作成します

Xephyrは明らかにUbuntuのSudo apt-get install xserver-xephyrにあります)

お役に立てれば、
乾杯!

編集:うん、xrandrは私にとって通常のプリントスクリーンで動作します(importでも動作し、端末が収まるのに十分なスペースが必要なので、ターゲットウィンドウと重ならない)、注意してくださいxorg.confの仮想サイズ( "xrandr:screen can be large than" ... を参照)

1
sdaau