Developpez.com - Rubrique Oracle

Le Club des Développeurs et IT Pro

Créer et Décoder un fichier BMP en PL/SQL

Par McM

Le 10/08/2015, par McM, Expert éminent
Pour pouvoir générer des QRCode, des codes barres, ou décoder un fichier image BMP, j'ai eu besoin de créer un fichier BMP dans un BLOB.

Première étape, comment ça marche
1 partie Header, 1 partie Entête et 1 partie Donnée.
Très simple car la partie donnée n'est pas cryptée.
Je n'ai eu besoin que de faire du Noir & Blanc, donc je n'ai pas approfondi le reste.

Petite info marrante (je trouve), dans un BMP on code la résolution verticale et horizontale en Pixel / Mètre !
#0B13h = 2835 px/m => 2835 / 39.3701 => 72dpi (pixel par inch)

Pour la partie Data j'avais déjà un tableau de chaine de caractère contenant chaque ligne de ma future image, avec des 0 ou 1 contenant chaque pixel.
La seule fonction à créer a été de passer du Binaire en Décimal afin de repasser en Raw (Hexa)

Voici le source : [ATTACH]184899d1/a/a/a" />

La fonction Generer_BMP prend en paramètres : Le tableau de données, la largeur et la hauteur, et le nombre de couleur.
Elle renvoie un BLOB contenant l'image.
La couleur : toujours mettre 2, le reste n'est pas codé.
La hauteur doit être égal au nombre de lignes du tableau de données

J'ai eu besoin de "décoder" un fichier BMP N&B afin d'insérer un logo dans une imprimante ticket en mode ESC/POS
La procédure P_GET_DATA prend en paramètre un Blob (image BMP Noir et Blanc), et renvoie la hauteur/largeur et le tableau de données.
Il n'y a encore que les images Noir & Blanc qui sont prises en compte.

La procédure CREER_FIC_IMG_IMP_ESCPOS est spécifique à la création d'un fichier texte à envoyer sur une imprimante ESC/POS.

Le prochain billet sera la création d'un code barre (EAN13, EAN128, QRCode) en Pl/Sql utilisant ce package afin de générer directement sous Forms l'image correspondante.
  Billet blog