Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/04/2011, 16h38   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : février 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2009
Messages : 44
Points : 13
Points : 13
Par défaut création de vignettes

Hello.

Je souhaite créer des vignettes à partir d'images uploadées via un formulaire.

J'utilise une fonction de redimensionnement en PHP, et j'insère la vignette dans ma page :

Code :
1
2
3
4
5
 
<?php 
$img_src = "/uploads/trucs/".$truc->getAdvertisementImage();
insertAndResizeImage($img_src, $max_width, $max_height)
?>
Et dans ma fonction insertAndResizeImage, je calcule les dimensions optimales, puis j'insère mon image :
Code :
1
2
3
4
 
<?php 
echo "<a href='".$img_src."'><img src='".$img_src."' height='".$new_size['height']."px' width ='".$new_size['width']."px'></img></a>"; 
?>
Tout fonctionne. Oui mais j'ai triché en fixant la taille de mon image pour tester ma fonction.

Je pensais que le code suivant me permettrait d'obtenir la taille de mon image :
Code :
1
2
3
4
5
 
$size = getimagesize($img_src);
 
$image_width  = $size[0];
$image_height = $size[1];
Mais non
J'obtiens le message d'erreur suivant :
Citation:
Warning: getimagesize(/uploads/trucs/193123ce1ac86ede842f5e5e92ea7de86b78fb48.png)
[function.getimagesize]: failed to open stream: No such file or directory in C:\dev\sfproject\project\apps\frontend\modules\truc\templates\_resizeImage.php on line 4
J'en viens donc à ma question :
Existe-t-il une manière propre d'indiquer à ma fonction getimagesize() l'emplacement du répertoire uploads autre que :
Code :
1
2
3
4
5
 
$size = getimagesize('http://localhost:8080/'.$img_src);
 
$image_width  = $size[0];
$image_height = $size[1];

Merci d'avance !
plastic1st est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 13h15   #2
Invité régulier
 
Inscription : janvier 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 47
Points : 7
Points : 7
Par défaut sfConfig::get('sf_upload_dir')

Quelque chose comme ça ?

Code :
1
2
protected  function resize ( $folder , $filename  ) 	 {
  		$file =	sfConfig::get('sf_upload_dir')."/medias/$folder/".$filename ;
pierreHaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 14h43   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : février 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2009
Messages : 44
Points : 13
Points : 13
Bah... en fait j'avais essayé, mais y'a comme un problème :
Quand j'utilise sfConfig::get('sf_upload_dir'), j'obtiens le chemin vers mon image :
c:/dev/../uploads/mon_image.png

Et mon image ne s'affiche pas.
Par contre, si je remplace le chemin par une url :
http://localhost:8080/uploads/mon_image.png

Ca marche !

Comment obtenir une url à la place du chemin ?
plastic1st est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h34   #4
Invité régulier
 
Inscription : janvier 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 47
Points : 7
Points : 7
Par défaut en PHP ?

$_SERVER['SERVER_NAME'];
pierreHaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h48   #5
Candidat au titre de Membre du Club
 
Homme
Inscription : février 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2009
Messages : 44
Points : 13
Points : 13
Salut PierreHaut.

Merci pour ton aide.
J'ai essayé $_SERVER['SERVER_NAME'], mais ça ne marche pas (parce que $_SERVER['SERVER_NAME'] contient "localhost:8080", et non "http://localhost:8080").

Comme ça commençait à me saouler, j'ai opté pour un truc pas joli mais qui fonctionne :
$upload_directory = $_SERVER['HTTP_REFERER']."../uploads/";

($_SERVER['HTTP_REFERER'] contenant "http://localhost:8080/frontend_dev.php/", je remonte d'un niveau et le tour est joué)
plastic1st est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 17h15   #6
Invité régulier
 
Inscription : janvier 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 47
Points : 7
Points : 7
'http;//' . $_SERVER['SERVER_NAME'] me semble plus sûr

$_SERVER['HTTP_REFERER']. c'est d'où tu viens
donc aucune garantie que ça marche
pierreHaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 17h18   #7
Candidat au titre de Membre du Club
 
Homme
Inscription : février 2009
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2009
Messages : 44
Points : 13
Points : 13
Ok.
Merci pour l'info.

Je corrige de suite.
plastic1st est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 14h56   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Le mieux est de ne pas mettre le nom du serveur, mais juste le chemin d'accès à partir de la racine du serveur.

Il ne faut jamais utiliser de variable $_SERVER ou autres $_GET dans symfony.

Tu trouves ce qui t'es nécessaire dans l'objet sfRequest qui est passé en paramètre lors de l'activation de l'action.

Dans le tutoriel jobeet il y a ce qu'il faut pour comprendre ce qui est récupération et stockage et affichage d'une image.

Tu as un plugin qui permet de gérer le redimensionnement de tes images.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h54.


 
 
 
 
Partenaires

Hébergement Web