Hallo 3ddd,
es gibt sonst noch eine andere Möglichkeit.
Vorteil:
- volle Auflösung
- maximale Details
- geht mit jeder Kamera, braucht keine zusätzliche Hardware
Nachteil:
- umständlich
- noch nicht allgemein (nicht jede Farbe kann von meinem Programm interpretiert werden)
Um meine Screenshots zu erstellen habe ich folgende kleine Codepassage in den Quellcode eingefügt (core/gui.c Zeile ca. 1497):
Suchen (müsste in der Funktion "void gui_kbd_process()" stehen):
- Code: Alles auswählen
int clicked_key;
Danach einfügen:
if ((!(gui_mode
==GUI_MODE_NONE
)) && kbd_is_key_clicked
(KEY_DISPLAY
)) {
int fd
;
unsigned char * img
;
int cnt
=0;
char fn
[36];
started
();
mkdir
("A/screen");
cnt
=0;
do {
cnt
++;
sprintf
(fn
, "A/screen/Bild%04d.bmp", cnt
);
fd
= open
(fn
, O_RDONLY
, 0777);
if(fd
>=0) close
(fd
);
} while(fd
>=0);
img
= vid_get_viewport_live_fb
();
if(img
==NULL
)
img
= vid_get_viewport_fb
();
fd
= open
(fn
, O_WRONLY
|O_CREAT
, 0777);
if( fd
) {
write
(fd
, img
, screen_buffer_size
*3);
close
(fd
);
}
sprintf
(fn
, "A/screen/OSD%04d.bmp", cnt
);
fd
= open
(fn
, O_WRONLY
|O_CREAT
, 0777);
if( fd
) {
img
= vid_get_bitmap_fb
();
write
(fd
, img
, screen_buffer_size
);
close
(fd
);
}
finished
();
}Erstellt in 0.010 Sekunden, mit
GeSHi 1.0.8.9
Jetzt kann man mit der Display-Taste ein "Screenshot" vom Menü machen.
Aber das ist leider nur die halbe Wahrheit,
da nur die Puffer ausgelesen werden die Canon für das OSD (OnScreenDisplay) bzw. Vorschaubild angelegt hat. Damit kann man so aber noch nichts anfangen. Für die Umsetzung der beiden Puffer (Bilder) zu einem Screenshot habe ich mir ein kleines Programm geschrieben, welches die Bilder zusammen bringen soll. Das Problem dabei ist nur, dass Canon erstens 4 verschiedene Farbpaletten verwendet um das OSD zu zeichnen und zweitens für mich kein logischer Zusammenhag zwischen RBG-Farbwert und dem Farbwert aus der Canon-Farbpalette besteht. Also hab ich die für mich wichtigen Farben aus einer Canon-Farbpalette nach meinem Gefühl zu RGB Farben mit Transparenzwerten umgerechnet. Es funktioniert, aber ist nicht Anwenderfreundlich. Als Parameter für den Converter ist anzugeben: 1. Vorschaubild 2. OSD-Bild.
z.B.: (in der Eingabeaufforderung) converter.exe Bild0001.bmp OSD0001.bmp
Wenn Fragen sind will ich sie gern versuchen zu beantworten.
CHDKLover