Hoe maak je een framebuffer screenshot doen

Hoe maak je een framebuffer screenshot doen

lt; span gt; #! / Usr / bin / perl -wlt; / spangt;

lt; span gt; $ w lt; / span gt; lt; span gt; = lt; / span gt; lt; a href = "http://perldoc.perl.org/functions/shift.html" gt; lt; span gt; verschuiving lt; / span gt; lt; / een gt; lt; span gt; || lt; / span gt; lt; span gt; 240 lt; / span gt; lt; span gt; ; lt; / span gt;

lt; span gt; $ h lt; / span gt; lt; span gt; = lt; / span gt; lt; a href = "http://perldoc.perl.org/functions/shift.html" gt; lt; span gt; verschuiving lt; / span gt; lt; / een gt; lt; span gt; || lt; / span gt; lt; span gt; 320 lt; / span gt; lt; span gt; ; lt; / span gt;

lt; span gt; $ pixels lt; / span gt; lt; span gt; = lt; / span gt; lt; span gt; $ w lt; / span gt; lt; span gt; * lt; / span gt; lt; span gt; $ h lt; / span gt; lt; span gt; ; lt; / span gt;

lt; a href = "http://perldoc.perl.org/functions/open.html" gt; lt; span gt; Open lt; / span gt; lt; / een gt; UIT lt; span gt ;. lt; / span gt; lt; span gt; "| pnmtopng" lt; / span gt; lt; span gt; of lt; / span gt; lt; a href = "http://perldoc.perl.org/functions/die.html" gt; lt; span gt; sterven lt; / span gt; lt; / een gt; lt; span gt; "Can not pipe pnmtopng: $ lt; spangt, \ NLT; / spangt;" lt; / span gt; lt; span gt; ; lt; / span gt;

lt; a href = "http://perldoc.perl.org/functions/printf.html" gt; lt; span gt; printf lt; / span gt; lt; / een gt; UIT lt; span gt; "P6% d% DLT; spangt, \ NLT; / spangt, 255lt, spangt, \ NLT; / spangt;" lt; / span gt; lt; span gt ;. lt; / span gt; lt; span gt; $ w lt; / span gt; lt; span gt ;. lt; / span gt; lt; span gt; $ h lt; / span gt; lt; span gt; ; lt; / span gt;

lt; span gt; terwijl lt; / span gt; lt; span gt; ( lt; / span gt; lt; span gt; ( lt; / span gt; lt; a href = "http://perldoc.perl.org/functions/read.html" gt; lt; span gt; lezen lt; / span gt; lt; / een gt; lt; span gt; STDIN lt; / span gt; lt; span gt ;. lt; / span gt; lt; span gt; $ ruwe lt; / span gt; lt; span gt ;. lt; / span gt; 2 lt; span gt; ) lt; / span gt; lt; span gt; en lt; / span gt; lt; span gt; $ pixels lt; / span gt; lt; span gt; – lt; / span gt; lt; span gt; ) lt; / span gt; lt; span gt; lt; lt; / span gt;

lt; span gt; $ kort lt; / span gt; lt; span gt; = lt; / span gt; lt; a href = "http://perldoc.perl.org/functions/unpack.html" gt; lt; span gt; uitpakken lt; / span gt; lt; / een gt; lt; span gt; ( lt; / span gt; lt; span gt; ‘S’ lt; / span gt; lt; span gt ;. lt; / span gt; lt; span gt; $ ruwe lt; / span gt; lt; span gt; ) lt; / span gt; lt; span gt; ; lt; / span gt;

lt; a href = "http://perldoc.perl.org/functions/print.html" gt; lt; span gt; afdrukken lt; / span gt; lt; / een gt; UIT lt; a href = "http://perldoc.perl.org/functions/pack.html" gt; lt; span gt; pak lt; / span gt; lt; / een gt; lt; span gt; ( lt; / span gt; lt; span gt; "C3" lt; / span gt; lt; span gt ;. lt; / span gt;

lt; span gt; ( lt; / span gt; lt; span gt; $ kort lt; / span gt; lt; span gt; & amp; lt; / span gt; 0xf800 lt; span gt; ) lt; / span gt; lt; span gt; & gt; & gt; lt; / span gt; 8 lt; span gt ;. lt; / span gt;

lt; span gt; ( lt; / span gt; lt; span gt; $ kort lt; / span gt; lt; span gt; & amp; lt; / span gt; 0x7e0 lt; span gt; ) lt; / span gt; lt; span gt; & gt; & gt; lt; / span gt; 3 lt; span gt ;. lt; / span gt;

lt; span gt; ( lt; / span gt; lt; span gt; $ kort lt; / span gt; lt; span gt; & amp; lt; / span gt; 0x1F lt; span gt; ) lt; / span gt; lt; span gt; & lt; & lt; lt; / span gt; 3 lt; span gt; ) lt; / span gt; lt; span gt; ; lt; / span gt;

lt; span gt; gt; lt; / span gt;

lt; a href = "http://perldoc.perl.org/functions/close.html" gt; lt; span gt; dichtbij lt; / span gt; lt; / een gt; UIT lt; span gt; ; lt; / span gt;

Hallo, ik probeer te veranderen ./iraw2png naar “Het omzetten van 32-bit Framebuffer screenshot als volgt uit:
1 #! / Usr / bin / perl-w
2
3 $ w = shift || 240;
4 $ h = shift || 320;
5 $ pixels = $ w * $ h;
6
7 open, “| pnmtopng of sterven” kan niet pipe pnmtopng: $ \ n;
8
9 printf OUT “P6% d% d \ N255 \ n, $ w, $ h;
10
11 while ((lees STDIN, $ rauw, 4) en $ pixels) lt;
12 $ korte = uitpakken ( “L ‘, $ raw);
13 uitdraai pack ( “C4,
14 ($ kort & 0xff000000) gt; gt; 24,
15 ($ kort & 0xFF0000) gt; gt; 16,
16 ($ kort & 0xff00) gt; gt; 8,
17 ($ kort & 0xff));
18 gt;
19
20 sluiten OUT;
maar het werkt niet. heb je het geprobeerd?

@xuan
Nee, ik had nooit proberen om een ​​script om 32-bit ruwe data om te zetten in PNG draaien.
Het moet mogelijk zijn. Als het niet werkt, kan het zijn dat de R, G, B, A orde of de indeling van uw PNG-bestand.
De makkelijkste te debuggen zou zijn om te gaan met een eenvoudige 32-bits RAW-bestand (bijv. 1 kleur).

@xuan
Voor 32-bits foto’s, kunt u ImageMagick direct gebruiken. Op mijn desktop computer, moest ik de alpha-kanaal te verwijderen en de kanalen te wisselen. RGBA -gt; BGR

$ Omzetten -depth 8-size 1920&# 215; 1080 rgba: screen.raw [0] -alfa off -apart -swap 0,2 -Combineer screen.png

Voor 24-bits afbeeldingen, het is hetzelfde, zonder het alpha-kanaal.

Deze gewijzigde versie van “Het omzetten van 32-bit Framebuffer screenshot werkt voor mij:

#! / Usr / bin / perl-w
$ W = shift || 240;
$ H = shift || 320;
$ Pixels = $ w * $ h;

open, “| pnmtopng of sterven” kan niet pipe pnmtopng: $ \ n;
printf OUT “P6 \ n% d% d \ N255 \ n, $ w, $ h;

while ((lees STDIN, $ rauw, 4) en $ pixels) lt;
$ Short = uitpakken ( “N ‘, $ raw);
uitdraai pack ( ‘C3’,
($ Kort gt; gt; 8) & 0xff,
($ Kort gt; gt; 16) & 0xff,
($ Kort gt; gt; 24) & 0xff
);
gt;

@nniico
Ik gebruik imagemagick ook. Ik geven deze opdracht op het bureaublad:

ssh [emailprotected] “cat / dev / FB0 | gzip | zcat | omzetten -depth 8-size 480&# 215; 272 rgba: – [0] -alfa off -apart -swap 0,2 -Combineer $ (date + “% Y-% m-% d-% H-% M-% S-% N ‘). png

waarbij 10.10.1.23 is het IP-adres van de raad van bestuur.
gzip en zcat kunnen worden weggelaten, het is gewoon een gewoonte van mij om altijd te comprimeren wanneer ik pijp iets over ssh.

Abonneer je op CNXSoft Blog via e-mail

recent commentaar

sponsors

Tags

Deze website maakt gebruik van cookies om uw ervaring te verbeteren. We zullen aannemen dat u ok met dit bent, maar als je niet van deze, kunt u verwijderen Accept Lees meer

Bron: www.cnx-software.com

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

4 × 4 =