bmpSave()

Sauvegarde un bitmap de format .BMP sur la carte SD

 

Exemples d'utilisation

bmpSave("Screen.bmp",0,0,MAX_X,MAX_Y); // Copie d'écran dans le fichier Screen.bmp
bmpSave("Screen.bmp"); // Équivalent
bmpSave("Screenprint.bmp"); // Ne fait rien, le nom a plus de 8 caractères!

 

Référence

byte bmpSave(String fileName, int x1 = -1, int y1 = -1, int x2 = -1, int y2 = -1);

Paramètres passés

fileName: nom du fichier sur la carte SD (format 8+3).
x1,y1: point en haut à gauche du bitmap
x2,y2: point en bas à droite du bitmap

Valeur retournée

Le code d'erreur:
0: tout s'est bien passé
1: problème d'initialisation de la carte SD
3: la zone à sauvegarder dépasse les limites de l'écran ou imposées par la fonction setLimites()

 

Voir aussi

- bmpDraw(); Charge un bitmap .BMP de la carte SD
- bpxDraw(); Charge un bitmap .BPX de la carte SD
- bpxSave(); Sauvegarde un bitmap .BPX sur la carte SD
- setLimites(); Limite la zone de dessin
- screenPrint(); Copie d'écran sur la carte SD
- initSD(); Initialisation de la carte SD
- point(); Dessine un point

 

Notes

Si le paramètre x1 (resp y1, x2, y2) est omis ou si il vaut -1, l'image copiée sera le plus à gauche (resp haut, droite, bas), en accord avec la limite qui peut avoir été définie avec la fonction setLimites(). Ne pas mettre de coordonnées va copier toute la zone (tout l'écran si on n'a pas réduit l'espace de dessin).

La sauvegarde est assez longue, et on ne devrait pas voir grand chose. Des hachures de progressions permettent de faire patienter. Ces hachures disparaissent quand la sauvegarde est finie.

La carte doit être au format FAT16 ou FAT32. Si le nom est trop long (plus de 8+3 caractères), rien n'est fait. Les répertoires sont séparés par le caractère '/'.

 

Exemple

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-401-bmpSave\Exemple-401-bmpSave.ino (dans votre fichier téléchargé):

// Ce programme écrit les caractères imprimables, puis fait une copie d'écran.

// Pour que le programme fonctionne, il faut insérer une carte microSD

#include <PecheuxGraph_ILI9341_8bits.h>
void setup() 
{
  setGraphMode(PAYSAGE);

  // Ecritures sur l'écran, par exemple tous les caractères imprimables
  for (char c=33; c<127; c++) text(String(c));
  text("àáâçèéêë?îï°±òóôµö÷ùúûü");

  if ( // Test pour voir si il y a bien la carte SD
    bmpSave("Screen.bmp")) // Copie d'écran
  {// la copie a échouée, le code d'erreur est non nul
    clrscr();
    text("Il n'y a pas la carte SD!"); 
  } else
  text("\n\nCopie d'écran effectuée");
}

void loop()
{
}

Résultat:

 

Côté technique

Sauvegarder au format .BMP permet de lire ce qui est sur l'afficheur avec un ordinateur. C'est typiquement pour faire des copies d'écran. Pour sauvegarder provisoirement une image, il vaut mieux utiliser le format .BPX qui est moins volumineux, plus rapide, mais qui ne peut pas être lu sur un ordinateur normal.

Pendant la sauvegarde, un point sur 32 sauvegardés est inversé, avec un décalage d'un point à chaque ligne. Cela permet de faire patienter. Cela peut faire des lignes, des pointillés... cela dépend de la largeur de la zone. Quand la sauvegarde est finie, les points sont de nouveau inversés pour retrouver le dessin d'origine. La technique utilisée est celle accessible par setDrawInverse.