Rechercher : dans
Par :

[PHP] Renommer une image génerée en PHP

Dernière réponse le 9 déc 2008 à 21:51:16 Bussy14, le 6 oct 2007 à 06:06:24 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un script PHP qui génère des images en utilisant la librairie GD, il marche à la perfection, le seul problème est que l'image affichée (appelée avec le code

<img src="image.php?blabla">
) a pour nom "image.php.jpg"
Comment pourrais-je nommer mon image pour qu'elle est un nom plus décent (et différent à chaque image générée) ?
Je sais que Facebook (facebook.com) fait ça, il génère des images PHP, il renomme l'image créée en fonction de l'id de l'image et de l'heure à laquelle elle est créée.

Une idée ?

Merci,
- Tibo -

Meilleures réponses pour « [PHP] Renommer une image génerée en PHP » dans :
PHP - Génération d'images Voir Prérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...
[Logiciels] Extraire toutes les images d'un PDF VoirVoici comment extraire toutes les images d'un fichier PDF. Avantage de cette méthode sur http://www.commentcamarche.net/faq/sujet-1036-: Les images sont extraites tel quel, sans perte de qualité (Par exemple, les JPEG sont extraits tel quel du...
Optimiser la taille des images PNG VoirOn peut optimiser de manière importante la taille des fichiers PNG, ce qui est particulièrement intéressant pour les pages web. La méthode décrite ci-dessous permet de réduire les fichiers PNG en moyenne à 40% de leur taille originale. Comment...
[Webmaster] Protéger les adresses email contre les bots VoirProtéger les adresses email contre les bots Vous êtes webmaster et pour une raison x, vous stockez l'adresse email de plusieurs membres de votre site . Ces adresses sont consultables dans leur profil (ex: forum, blog etc....). Or, aujourd'hui,...
Télécharger MacOSaiX VoirMacOSaiX est un programme d'édition de mosaïques. L'application permet de créer des mosaiques à partir d'une image quelconque. Les images peuvent être automatiquement affichées à partir : des dossiers internes, des images générées par vos...

1

vignemail1, le 6 oct 2007 à 10:19:12

A mon avis tu devrais regardé au niveau de la fonction php header() et voir si tu ne peux pas spécifier le nom du fichier, un peu comme lorsque tu envoie le type mime au début de image.php

Répondre à vignemail1

2

Ssylvainsab, le 6 oct 2007 à 10:35:35

Salut.

Je ne suis pas sur, mais je pense que l'une des seules solutions est l'url rewriting.
Je te conseille de faire un dossier /image, ou tu mettras ton script PHP de génération d'image.
Ensuite, tu peux générer plusieurs images différentes selon l'url qui est appelée. Sylvain

Répondre à Ssylvainsab

3

Bussy14, le 6 oct 2007 à 16:09:01

Tu parles d'utiliser un .htaccess qui lit qqc du genre:
.../image/acces-image_mon-nom-d-image
et de le retranscrire en :
image.php?chemin=acces-image&nom=mon-nom-d-image

J'utilise ces informations pour créer mon image, puis comme ça le script appelé a l'air d'avoir un vrai nom d'image ?

Je vais essayer ça, ça pourrait marcher en effet!

Je vous tiens au courant

Répondre à Bussy14

4

Bussy14, le 8 oct 2007 à 20:52:50

Salut!

Ça marche très bien!
Merci beaucoup pour l'idée!

Ça m'a prit pas mal de temps à le configurer, mais finalement c'est parfait!

Merci!

Répondre à Bussy14

5

Ssylvainsab, le 9 oct 2007 à 19:48:34

Salut !
Est-ce que tu peux expliquer ici ce que tu as fait (ou pourquoi pas dans les astuces, si tu es contributeur) ?
Ca servira sûrement à d'autres, et ça m'intéresse aussi.
Merci ! Sylvain

Répondre à Ssylvainsab

6

Bussy14, le 10 oct 2007 à 01:51:37

Bon alors voilà la solution au problème:
Comment renommer une image générée en PHP ?

Le problème étant que quand on créé une image en utilisant la librairie GD en PHP, l'image créée à pour nom le nom du fichier php utilisé, avec l'extension de l'image, ex:
image.php.jpg

Alors une solution au problème est d'utiliser l'URL Rewriting en utilisant un fichier ".htaccess".

Un fichier .htaccess est un fichier lu par le serveur et interprété avant d'exécuter les fichiers appelés, il peut servir entre (pleins d') autres à créer des URL statics, qui sont, eux, indexés par les moteurs de recherche (google, yahoo, ...) contrairement aux pages dont l'URL est du genre: fichier.php?a=3&e=5, car les moteurs de recherche coupent l'URL à partir du '?' (point d'interrogation).
ex:
l'url : www.site.com/2007/10/09
peut être interprété par:
www.site.com/index.php?annee=2007&mois=10&jour=09

Bon, dans mon cas, je donne le nom de l'image en URL, et c'est le fichier de création d'image qui est appelé en passant en paramètre le nom de l'image depuis laquelle il faut créer une nouvelle.

Plus précisément, j'écris dans le fichier .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.+)__(.+)__(.+)__([0-9]+)__([0-9]+)$ image.php?a=$1&i=$2&e=$3&w=$4&h=$5

Pour les détails, il faudra lire les documents d'apprentissage.

Ce .htaccess est placé dans un sous-dossier nommé "image"
Dans ce sous-dossier, il n'y a que le fichier .htaccess et le fichier de création d'image, nommé "image.php"

comme on peut voir, image.php prend 5 arguments:
1 - le nom de l'album
2 - le nom de l'image (sans l'extension, pcq ca ferait trop laid)
3 - le type de l'image (un code pour déterminer l'extension: 0=jpeg, 1=jpg, 2=png, 3=gif)
4 - largeur que prendra l'image créée
5 - hauteur de l'image créée

Au final, dans le dossier parent, quand on affiche une image, on utilise:
<img src="image/nom-dossier__nom-image__code-type__largeur__hauter" />
ex:
<img src="image/divers__chien__2__250__120" />
Ce qui crééra une image de type png de largeur 250, de hauteur 120 qui s'appelle chien.png et qui se trouve dans le dossier divers, et le nom de l'image créée (quand on fait: clic-droit->Enregistrer l'image sous) est: diver__chien__2__250__120.png

L'URL rewriting utilisant un masque, ce qui est entre parenthèse est un élément qui va devenir un attribut, ".+" signifie n'importe quel caractère et "[0-9]" n'importe quel nombre, j'utilise donc un double '_' ("underscore") car certains de mes noms de dossiers ou d'images contiennent le caractère '_' ("underscore").

Mais selon vos besoins, si vous êtes sûr de pouvoir utiliser un caractère unique séparant vos attributs (nom de dossier, d'image, etc...), vous pouvez obtenir quelquechose de plus propre, tel que:
dossier-image-type-largeur-hauteur.

Une autre solution est d'utiliser une base de donnée qui associe un ID unique à une image.
Ainsi, en appelant l'URL: www.site.com/ID-de-mon-image
le fichier image.php appellera l'image dont l'ID correspond dans la table.
(c'est d'après moi ce qu'utilise Facebook, mais je veux écrire un script plus portable, donc pas de base de données).


Pour toute question, n'hésitez surtout pas à la poster! Je reçois les nouveaux posts par mail, donc je répondrai au plus tôt!

Bon courage!

- Thibaud -

Répondre à Bussy14

7

Ssylvainsab, le 10 oct 2007 à 08:36:42

Salut !

Merci pour ton explication.
Avec quel hébergeur est-tu ?

Juste une ramrque :
""
Un fichier .htaccess est un fichier lu par le serveur et interprété avant d'exécuter les fichiers appelés, il peut servir entre (pleins d') autres à créer des URL statics, qui sont, eux, indexés par les moteurs de recherche (google, yahoo, ...) contrairement aux pages dont l'URL est du genre: fichier.php?a=3&e=5, car les moteurs de recherche coupent l'URL à partir du '?' (point d'interrogation).
""

Maintenant, les liens avec des variables (?truc=machin&toto=tata&foo) sont bien vérifiés par les moteurs de recherche. Mais de toute façon, c'est plus propre comme ça (et puis certains moteurs suivant des urls font EXPRES de ne pas suivre les urls de ce type, pour différentes raisons). Sylvain

Répondre à Ssylvainsab

8

Bussy14, le 10 oct 2007 à 18:15:12

Salut,

Ah, merci pour la précision, je ne savais pas! :)

Je suis sur deux hébergeurs: ixwebhosting: http://www.ixwebhosting.com/

et d'un autre côté, un ami m'héberge sur dreamhost: https://dreamhost.com/signup/

Le premier étant pour le boulot, le deuxième est perso.
Les deux sont très bien, bien que dreamhost a connut plus de "down", plus de moment de lag ou même de non accessibilité que ix.
Pour un usage perso, dreamhost est très bon car pas cher.
Sur les deux, il y a énormément d'espace disque et de bande passante disponibles.

Voilà,

Au plaisir d'avoir aidé quelques-uns et d'en avoir appris beaucoup!

- Thibaud -

Répondre à Bussy14

9

 pr.nizar, le 9 déc 2008 à 21:51:16

Essaye http://www.olympe-network.com histoire de changer! ;)

Répondre à pr.nizar