Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stocker des images sous forme de chaine de caracteres

3 réponses
Avatar
( ::: A PRECISER ::: )
Bonjour,

Pour limiter l'espace disque occupé (j'ai de nombreux fichiers images qui
n'occupent pas complétement leur cluster), je souhaiterais stocker sous
forme de chaine de caractère environ 300 fichiers image (des minis drapeaux
pour etre plus précis).

Par la suite, pour afficher une image, je ferais un appel à une page du
style "image.php?pays=fr" qui renverra au navigateur l'image (en envoyant
un header PNG et la fameuse chaine de texte). Voici un bout de code que j'ai
trouvé :

<?php
header('Content-Type: image/png');
echo base64_decode($chaine_de_texte);
exit;
?>

Dans le cas présent, mon problème consiste à balayer un répertoire
(contenant les images au format PNG) et récupérer la "substantifique moelle"
des fichiers image (sous forme de chaine de caractère qui sera renvoyée via
la $chaine_de_texte ).

Je sais faire une boucle et parcourir un dossier, mais je ne sais comment
m'y prendre pour ouvrir le fichier image, et récupérer les infos (qui dont
binaires car c'est un PNG) sous forme de chaine de caractère.

Merci d'avance.

Fabien

3 réponses

Avatar
Steph.K
Bonjour,

Pour limiter l'espace disque occupé (j'ai de nombreux fichiers images qui
n'occupent pas complétement leur cluster), je souhaiterais stocker sous
forme de chaine de caractère environ 300 fichiers image (des minis drapeaux
pour etre plus précis).


Une autre idée pour gérer tes images, tu les regroupes en une seule
image et tu utilises les propriétés css (background-image et
background-position) pour n'afficher que la partie de ton image qui
t'interesse. Inconvénient : tu charges une image plus grosse et c'est
dommage si tu ne veux faire qu'un seul affichage. Avantage : tu ne
charges qu'une image et après le premier affichage, les autres sont
instantanés.

--
Steph.K
http://www.acces-pour-tous.net

Avatar
Olivier Miakinen

Pour limiter l'espace disque occupé (j'ai de nombreux fichiers images qui
n'occupent pas complétement leur cluster), je souhaiterais stocker sous
forme de chaine de caractère environ 300 fichiers image (des minis drapeaux
pour etre plus précis).

[...]

<?php
header('Content-Type: image/png');
echo base64_decode($chaine_de_texte);
exit;
?>

[...] je ne sais comment
m'y prendre pour ouvrir le fichier image, et récupérer les infos (qui dont
binaires car c'est un PNG) sous forme de chaine de caractère.


Tout d'abord tu dois lire le fichier sous forme binaire et le stocker
dans une chaîne. Il semblerait que la fonction file_get_contents()
fasse cela, mais je ne suis pas absolument certain que ce soit en mode
binaire.
<http://fr2.php.net/manual/fr/function.file-get-contents.php>

Si ton serveur est sur un Unix ou équivalent, ça n'a pas d'importance.
Dans le cas contraire, tu devras d'abord tester pour t'en assurer, ou
bien décomposer en fopen(..., "rb") suivi de fread(..., filesize(...)).
<http://fr2.php.net/manual/fr/function.fread.php>

Bien sûr, tu ne devras pas oublier d'appliquer la fonction inverse de
base64_decode(). Sans lire la doc, je crois deviner comment elle
s'appelle...

Avatar
Marc

Pour limiter l'espace disque occupé (j'ai de nombreux fichiers images qui
n'occupent pas complétement leur cluster), je souhaiterais stocker sous
forme de chaine de caractère environ 300 fichiers image (des minis drapeaux
pour etre plus précis).


300 blocs, en voila une grosse affaire pour un disque dur actuel
a moins que tu ne travailles dans le monde de l'embarqué avec une
memoire flash inférieur a 16Mo, je ne vois pas l'intéret d'une
telle opération.

D'autant que la conversion binaire-ascii consomme de la place.