Plutot meconnue, ce format d'URL permet d inclure dans une page HTML une image sans referencer un fichier externe. On parle aussi d'image embarquee ( desole, j ai pas trouve mieux comme traduction d'embedded :)
Ce format est defini dans un RFC -dont j ai oublie le numero-, d'ailleurs redige par un developpeur de Netscape me semble-t-il :)
A noter que ce format est uniquement supporte par les navigateurs Netscape. Sous IE vous obtiendrez une image cassee.
Voici la maniere traditionnelle d'inclure une image dans une page HTML:
<img src="img/box.gif">
Resultat:
Image inclue par une URL data:
<img src="data:image/gif;base64,R0lGODlhFAAWAMIAAP///8z//8zMzJmZmTMzMwCZMwBmMwAAACH+TlRoaXMgYXJ0IGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiBLZXZpbiBIdWdoZXMsIGtldmluaEBlaXQuY29tLCBTZXB0ZW1iZXIgMTk5NQAh+QQBAAABACwAAAAAFAAWAAADf0i6vPEwEECrnSS+aTvPEddVIriN1wWJ1GEdBCyf1TG47aHvNGAPAtdgSLzRfsBgkXg4FoaCKJLpfEaly6akVeheDVPj1tf1GsBEgJhzKBfO6AFlXSvDbYA8PU9+n3F6Wixkf3yBPXwHYIaHY4yAhnuMk40KS5dEMRE7nJ2cDwkAOw">
Resultat:
le format de cette URL est :
data:mime-type;content-encoding,encoded-content
Note: le premier separateur est un point-virgule, le deuxieme une virgule.
D'une maniere generale, c'est utile dans les cas on veut un document unique. C'est par exemple le cas d'un mail au format HTML, lorsque le destinataire du mail n'est pas connecte au web ( et ne verrait donc pas les images du document).
Le RFC specifie bien que la taille de l'image embarquee doit rester "raisonnable" sans preciser de taille limite.
Voici un bout de code permettant d'embarquer une image dans un doc HTML via une URL data:
<?
// Format du tag img avec un hanfler d'url data: $fmtImgData = '<img src="data:%s;%s,%s" border="1">';
$filename = "img/ns.jpg"; // fichier image a inclure $linesz = filesize( $filename )+1; // retrieve la taille du fichier $fp = fopen( $filename, 'r' ); // ouvre le fichier
echo "<html><body>Test of data url in PHP<br>\n\n";
// affiche l'image printf( $fmtImgData, "image/jpeg" , "base64", chunk_split( base64_encode( fread( $fp, $linesz) ) ) );
fclose( $fp ); // ferme le fichier image
echo "\n\n</body></html>\n"; // ferme la page
?>Demonstration
Auteur | Leo West |
Dtcreate | 30 Jun 2000 |
Dtmod | 30 Jun 2000 |