Bonjour,
Il y a peut être d'autres moyens que GTK pour faire ça, mais il fallait bien que je commence par une première piste.
Je cherche à créer une zone graphique, qui afficherait des données binaires, provenant d'un fichier passé en paramètre de l'application.
Dans ce fichier, un octet représente 8 pixels, et donc chaque bit représente un pixel : bit à 0 = pixel blanc, bit à 1 = pixel noir.
Le fichier représente l'équivalent d'une image géante, et comme ce fichier peut faire plusieurs Go, il n'est pas possible de l'ouvrir en une seule fois, la zone graphique nécessaire serait beaucoup trop lourde.
L'idée serait de n'afficher qu'un morceau de "l'image binaire" dans la zone graphique définie, et pouvoir se déplacer dedans :
Sachant qu'il n'y aurait besoin de se déplacer que verticalement dans l'image, car la largeur de la fenêtre d'affichage fera toujours la même largeur en nombre de pixels que la largeur de "l'image binaire".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30+----------------------------+ | | | | | | | Fichier binaire | | | | | | | | | |+--------------------------+| || || || || || || || Fenetre d'affichage || || || || || || || |+--------------------------+| | | | | | | | | | | | | | | | | | | | | +----------------------------+
Dans le fichier, si par exemple je sais que la largeur de l'image est de 70656 pixels (soit 70656/8 = 8832 octets), et bien les 8832 premiers octets du fichier représentent la 1ere ligne de l'image, les 8832 suivants la seconde ligne, etc....
Un peu comme un frame buffer quoi. D'où mon idée de trouver une solution pour simuler un frame buffer dans une fenêtre graphique, avec la zone de donnée qui va avec, et simplement copier en brut les données du fichier dans la zone frame bufffer.
Et pour se déplacer de haut en bas dans l'image, il suffirait alors de se décaler par multiples de 8832 octets (selon mon exemple ci-dessus) dans le fichier et mettre à jour la zone framebuffer pour afficher les données correspondantes.
J'arrive à faire une partie du boulot avec Gimp, en ouvrant mes fichiers en mode raw en mode 1 bit noir et blanc, mais je ne peux ouvrir qu'une zone définie, il n'est pas possible de "se déplacer dedans" :
Quelqu'un aurait-il une idée un ou conseil sur la meilleur façon de faire ça ? D'habitude je fais plutôt du code embarqué et de la ligne de commande, les interfaces graphiques je nage un peu !
Bonne soirée !
Partager