Воспользоваться таким скриптом. Выходной формат - bmp:
#!/usr/bin/perl
$ttynum=shift or die "Usage: grab <vttynum>\n";
die "$ttynum: Incorrect virtual console number\n" unless $ttynum=~/^\d+$/;
$ttydev="/dev/tty" . $ttynum;
$vcsadev="/dev/vcsa" . $ttynum;
open(VCSA, $vcsadev) or die "Cannot open $vcsadev: $!\n";
$len=read(VCSA, $buf, 16384);
close(VCSA);
($height, $width, $curx, $cury)=unpack('C4',$buf);
open(T, $ttydev) or die "Cannot open $ttydev: $!\n";
$fnt=pack('L4096', 0);
$fntx=pack('SSP', 256, 32, $fnt);
ioctl(T, 0x4B6B, $fntx) or die "Cannot grab console font: $!\n";
close(T);
($nchars, $fheight)=unpack('SS', $fntx);
$thickness = ($fheight >= 14 ? 2 : 1);
foreach $c (0..255)
{
my @tmp;
my @ch=split(//, substr($fnt, $c*32, $fheight));
push @tmp, [ split(//, unpack('B8',shift @ch)) ] while @ch;
push @font,[ @tmp ];
}
print 'BM'.pack('L29',
$width*$height*$fheight*4+118,0,118,40,$width*8,$height*$fheight,0x40001,
0,$width*$height*$fheight*4,0x120b,0x120b,16,16,
0x000000,0x000080,0x008000,0x008080,0x800000,0x800080,0x808000,0xC0C0C0,
0x808080,0x0000FF,0x00FF00,0x00FFFF,0xFF0000,0xFF00FF,0xFFFF00,0xFFFFFF);
for($line=$height-1;$line>=0;--$line)
{
my @img;
push @img,[] while (1..$fheight);
foreach $col (0..$width-1)
{
($fgattr,$bgattr)=
split(//, unpack('h2', substr($buf, 5+2*($line*$width + $col), 1)));
$ch=unpack('C', substr($buf,4+2*($line*$width + $col), 1));
if($line==$cury && $col==$curx)
{
foreach $_ (1..$fheight-$thickness)
{
push(@{$img[$fheight-$_]},
map {$_?$fgattr:$bgattr} @{$font[$ch][$_-1]});
}
foreach $_ (0..$thickness-1)
{
push @{$img[$_]},($fgattr)x8;
}
}
else
{
foreach $_ (1..$fheight)
{
push(@{$img[$fheight-$_]},
map {$_?$fgattr:$bgattr} @{$font[$ch][$_-1]});
}
}
}
print pack('H'.(8*$width),join('',@$_)) while $_=shift @img;
}
Если требуется "текстовый" скриншот, можно воспользоваться screen. Подробности - C-a ?
Подскажите, пожалуйста. Интересуют
тарифы мтс недорого ? . Телевизоры
холодильники bosch встраиваемые посудомоечные машины.
Комментарии:
(2) Рейтинг: