# Environnements de dveloppement > Delphi > Codes sources  tlcharger >  Encoder un TBitmap en base64

## XeGregory

Encoder un TBitmap en base64

Lencodage d'une image en base64 est une des bonnes pratiques doptimisation web. 
Cet encodage transforme un fichier image en suite de caractre. 
Cela permet de diminuer considrablement le nombre de requtes envoyes au serveur web par le navigateur.





```
<img src="data:image/x-ms-bmp;base64,4AAQSkZJRgABAQE..........ASABIAAD" alt="aperçu d'une image encodée en base64" />
```


*Code Source :* TBitEncode64.zip

----------


## Jipt

Bonjour,



> Cela permet de *diminuer considrablement* le nombre de requtes envoyes au serveur web par le navigateur.


Pourquoi ?

C'est quoi la diffrence (en termes de requtes vers le serveur) entre


```
<img src="data:image/x-ms-bmp;base64,4AAQSkZJRgABAQE..........ASABIAAD" alt="aperçu d'une image encodée en base64" />
```

et 


```
<img src="/chemin/fichier.bmp" alt="aperçu d'une image bitmap classique" />
```

?
Merci,

----------


## tourlourou

Merci !
Avec quelle ou  partir de quelle version de Delphi est-ce compatible ?

----------


## tourlourou

@Jipt : salut ! En incluant l'image dans le source de la page _html_  la place d'une adresse o aller la charger pour l'inclure lors du rendu, on diminue bien le nombre d'_url_  visiter pour constituer sa page. Par contre, on alourdit sa page (voire la taille totale tlcharge, car le Base64 doit tre plus volumineux que les fichiers image compresss).

----------


## XeGregory

> Pourquoi ?


http://www.bellami.fr/encoder-ses-images-en-base64

----------


## XeGregory

> Merci !
> Avec quelle ou  partir de quelle version de Delphi est-ce compatible ?


*Embarcadero RAD Studio 10.1 Berlin*

----------


## Cirec

Bonjour,

Sinon pour toutes les versions de Delphi on peut utiliser la bibliothque Indy9 ou 10



```

```

Cordialement,
@+

----------


## Paul TOTH

je pense quand  moi que c'est une trs mauvaise pratique qui n'a d'intrt que dans des cas trs particuliers

 chaque chargement de la page, les images en base64 qui sont de taille plus importante que l'original sont recharges alors que sur un fichier externe, la mise en cache du navigateur permet de ne charger l'image qu'une fois pour toute (enfin pour un certain temps)

par contre regrouper toutes les petites images dans une seule et utiliser les CSS pour dcouper cette image en portions plus petites peut apporter plusieurs avantages:
- une seule image sera mieux comprime que plusieurs petites (une seule entte, et compression sur l'ensemble au lieu d'une compression individuelle de chaque portion)
- une seule requte pour charger toutes les images
- temps de chargement identique pour toutes les images
- temps de chargement uniquement lors de l'affichage de la premire image

----------


## ShaiLeTroll

Quelle pratique rudimentaire cette encodage, rien de bien de neuf, l'unit EncdDecd contient l'encodage en Base64 (depuis au moins D6)

Les serveurs Web grant les images sont souvent coupls avec des systmes de cache et des rpartiteurs.
Tu peux justement sparer ton gnrateur de HTML+CSS+JS+JSON sur un serveur et faire pointer les images sur un autre serveurs
Comme a tu utilises au mieux ton serveur Web qui est plus consommateur de CPU et ton serveur image lui c'est plutt du DD (ou du cache)

Multiplier par 4 le volume de donnes changes pour esprer que cela optimise doit effectivement tre fonctionnel sur des cas trs particulier et nuisibles pour beaucoup d'autres

Le principe expliqu par Paul Toth, est un grand classique des systmes de Skin ou de Sprite, une image scinde en plusieurs

----------


## foetus

> par contre regrouper toutes les petites images dans une seule et utiliser les CSS pour dcouper cette image en portions plus petites peut apporter plusieurs avantages:


Le seul inconvnient des sprites CSS  ::mrgreen:: , c'est qu'il faut savoir la largeur et la hauteur de la zone o sera dessin l'image. Par exemple, lorsque tu as une image en fond (_background_) en mode  "_repeat_" c'est mort.





> Multiplier par 4 le volume de donnes changes pour esprer que cela optimise doit effectivement tre fonctionnel sur des cas trs particulier et nuisibles pour beaucoup d'autres


Cela peut tre utilis pour envoyer/ avoir un seul fichier  ::mrgreen:: .

Par exemple, moi  ::oops:: , au lieu d'envoyer un document word, j'envoie une page HTML parce que je mets au moins 2 fois moins de temps  mettre en forme le texte en HTML+css qu'avec Word (et aussi cela m'vite de pirater Word que je n'ai pas chez moi) : ainsi je me concentre sur le texte en premier lieu et ensuite je le repasse sous Word  ::mrgreen::

----------


## Jipt

> et ensuite je le repasse sous Word


OK mais pense bien  rgler le slecteur sur "textile dlicat", et humidifie  la vapeur, hein !
 ::ptdr:: 
Dsol j'ai pas pu rsister,  ::P:

----------


## Paul TOTH

> Le seul inconvnient des sprites CSS , c'est qu'il faut savoir la largeur et la hauteur de la zone o sera dessin l'image. Par exemple, lorsque tu as une image en fond (_background_) en mode  "_repeat_" c'est mort.


cela reste possible dans un sens (vertical ou horizontal) mais pas les deux en effet

https://www.phpied.com/background-re...d-css-sprites/

----------

