> Tous les forums > Forum des Webmasters
 chargement d'image et affichage bizarre !!!
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
marc80
  Posté le 04/06/2009 @ 22:23 
Aller en bas de la page 
Petit astucien

Bonjour,

je fais une galerie presse dans laquelle des vignettes appellent des images.

Je charge des images avec le code suivant :

<?php

$rep=$rep_images; // Répertoire de stockage

if(isset($_FILES['photo'])) {

//On simplifie le nom des variables $_FILES

$tmp_name=$_FILES['photo']['tmp_name'];

$name=$_FILES['photo']['name'];

$size=$_FILES['photo']['size'];

$type=$_FILES['photo']['type'];

$erreur=$_FILES['photo']['error'];

$name = strtr($name,

'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

$a_remplacer='/([^.a-z0-9]+)/i';//entre '' et entre //

$remplacement='_';

$name= preg_replace($a_remplacer,$remplacement,$name);

$name=ereg_replace('\'','_',$name);

if(strtolower(substr($_FILES['photo']['name'],-4))==".jpg") {

echo "<br />Erreur : ".$erreur.'<br />';

//On déplace le photo du dossier temporaire vers le dossier de destination

if (is_uploaded_file($_FILES["photo"]["tmp_name"] ) ) {

//vérifie le transfert

if ($_SESSION['utilisateur']=='marc.hynaux') {

echo "<span align='center'>".$name.' temporaire est chargé </span>';

if (@rename($_FILES["photo"]["tmp_name"],$rep.$name)) {

echo $rep.$name.'<br />fichier placé dans le répertoire';

}

else echo '<br /><b>Le fichier existe déjà ou ne peut être renommé</b><br />' ;

}

$erreur_chargement=0;

}

else

{

echo "<span align='center'>".$name.' n\'est pas chargé.<br /> </span>';

$erreur=$_FILES['photo']['error'].'<br />';

switch ($erreur) {

case 1:

echo " Le fichier excède le poids autorisé par la directive upload_max_filesize de php.ini soit 2M";

break;

case 2:

echo "Le fichier excède le poids autorisé par le champ MAX_FILE_SIZE soit 300k ";

break;

case 3:

echo "Le fichier n'a été uploadé que partiellement";

break;

case 4:

echo " Aucun fichier n'a été uploadé";

break;

}

echo '<br />';

echo('on arrête le chargement de '.$name);

$erreur_chargement=1;

}

}

else echo '<br /><b>le fichier doit être jpg</b> <br />';

}

?>

Le fichier est correctement chargé et je le trouve dans le bon répertoire en regardant avec Filezilla.
Je génère une vignette : <?php function redimage($rep_images,$rep_vignettes,$img_src,$dst_w,$dst_h) { // Lit les dimensions de l'image $size = GetImageSize($rep_images.$img_src); $src_w = $size[0]; $src_h = $size[1]; // Teste les dimensions tenant dans la zone $test_h = round(($dst_w / $src_w) * $src_h); $test_w = round(($dst_h / $src_h) * $src_w);// Si Height final non précisé (0) if(!$dst_h) $dst_h = $test_h; // Sinon si Width final non précisé (0) elseif(!$dst_w) $dst_w = $test_w; // Sinon teste quel redimensionnement tient dans la zone elseif($test_h>$dst_h) $dst_w = $test_w; else $dst_h = $test_h; // Crée une image vierge aux bonnes dimensions $dst_im = ImageCreate($dst_w,$dst_h); // Copie dedans l'image initiale redimensionnée $src_im = ImageCreateFromJpeg($rep_images.$img_src); ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); // Sauve la nouvelle image ImageJpeg($dst_im,$rep_vignettes.$img_src); // Détruis les tampons ImageDestroy($dst_im); ImageDestroy($src_im); } ?> j'affiche la vignette sans problème la vignette appelle l'image : <?php $lien=$_GET['lien'];//je récupère le lien absolu de l'image $pos=strrpos($lien,'/'); $image=substr ( $lien, $pos+1); $lien='images/'.$image;//j'ai créé un lien relatif pensant que l'erreur était là list($width, $height, $type, $attr) = getimagesize($lien); $rap_largeur=800/$width;$rap_hauteur=400/$height;//je désire que la largeur soit < 800 px et la hauteur soit < 400px if ($rap_largeur>$rap_hauteur) { $hauteur=intval($height*$rap_hauteur); } else{ $hauteur=intval($height*$rap_largeur); } if ((isset($_SESSION['utilisateur']) )and ($_SESSION['utilisateur']=='marc.hynaux')) {echo $lien;} ?><br /> <a href="affichage.php?image=0">Retour aux vignettes<br /><br /> <img src="<?php echo $lien;?>" height="<?php echo $hauteur;?>" /></a><br /> Tout va très bien en local, mais sur le site, si la vignette (créée sur le serveur à partir de l'image chargée) est correctement affichée l'image ne s'affiche pas. Et plus bizarre : avec Fillezilla, je charge l'image du serveur vers mon ordinateur. j'efface alors l'image du serveur. avec Fillezilla, je charge la même image de mon ordinateur vers le serveur. Et ça marche !!!

if (is_uploaded_file($_FILES["photo"]["tmp_name"] ) ) {
//vérifie le transfert
if ($_SESSION['utilisateur']=='marc.hynaux') {
echo "<span align='center'>".$name.' temporaire est chargé </span>';
if (@rename($_FILES["photo"]["tmp_name"],$rep.$name)) {
echo $rep.$name.'<br />fichier placé dans le répertoire';
}
else echo '<br /><b>Le fichier existe déjà ou ne peut être renommé</b><br />' ;
}
$erreur_chargement=0;
}

En résumé : je charge une image sur le serveur. A partir de cette image, sur le serveur, je crée une vignette.

La vignette s'affiche et j'en fait un lien vers l'image qui elle ne s'affiche pas.

Je ramène cette image avec Filezilla vers mon ordi, je l'efface du serveur, je la remets sur le serveur avec Filezilla et ça fonctionne.

Quelqu'un voit-il mon erreur ou mon oubli ?

Merci de vos réponses

Marc

Publicité
tirikou
 Posté le 04/06/2009 à 23:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

j'avoue ne pas comprendre ton cheminement ...

Tu veux afficher l'image ou non ?

Entre nous c'est compliqué ton truc non ?

Pourquoi cheminer vers un un temp ?

Tu veux l'afficher ou non ?

Pour moi mon ton script est un d'upload mais pas d'affichage et put... il est bien compliqué

Tu peux préciser STP !



Modifié par tirikou le 04/06/2009 23:32
tirikou
 Posté le 04/06/2009 à 23:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Re bonjour,

Cela me semble une véritable usine à gaz. Tu n'aurais plus simple ?

Perso je ne vois pas le but.

kalinka
 Posté le 05/06/2009 à 08:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucienne

a premiere vue je dirais qu'il essaye de generer une thumb a partir des images presentes dans un dossier bref il essaye de faire une galerie photo avec creation de vignettes a la volée sans utiliser la librairie gd

marc80
 Posté le 05/06/2009 à 13:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour.

Désolé de ne pas avoir été clair. J'essaie de m'expliquer.

1. je charge une image de type jpg de mon ordinateur vers le serveur. (je ferais mieux d'utiliser son type que de regarder l'extension je crois)

  • je reçois le fichier par $_FILES['photo'] (formulaire html <form type="file" ....
  • je pense qu'il arrive dans un fichier temporaire (script trouvé et modifié, mais je me trompe peut être)
  • je débarasse le nom des accents, des espaces.
  • je le place dans un répertoire image "@rename($_FILES["photo"]["tmp_name"],$rep.$name)" (je suis le seul à pouvoir le faire d'où "if ($_SESSION['utilisateur']=='marc.hynaux')"
  • résultat : le fichier se retrouve sur le serveur dans le bon répertoire : 'presse/images/'

2. je génére une vignette (thumb) à partir du fichier chargé sur le serveur. "function redimage($rep_images,$rep_vignettes,$img_src,$dst_w,$dst_h)", fonction trouvée sur http://www.asp-php.net/scripts/asp-php/vignette.php.

3. j'affiche les vignettes (elles s'affichent normalement). "<a href="affichage.php?image=1&lien=<?php echo $pieces[1];?>">

<img src="<?php echo str_replace("images", "vignettes", $pieces[1]) ;?>" /></a>

(image=1 pour dire que je vais afficher une image et $pieces[1] étant le lien pour cette image.)

4. le lien est bon (vérifié par un echo) mais l'image ne s'affiche pas, sauf

  • si je le transfère du serveur, répertoire :"presse/images/" par Filezilla sur mon ordi
  • si je l'efface ensuite sur le serveur
  • et que je la recharge par Filezilla de mon ordi vers répertoire :"presse/images/"
  • c'est surtout ça que je trouve bizarre : c'est la même image qui sert à faire la vignette, et à qui je fais faire un aller -retour

Je donne le lien http://www.harmonie-abbeville.fr/presse/affichage.php

Bonne journée et merci de vos réponses.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
169,99 €Ecouteurs intra-auriculaire sans-fil Sony WF-1000XM3 à réduction de bruit active à 169,99 €
Valable jusqu'au 10 Mai

Amazon fait une belle promotion sur les écouteurs intra-auriculaire sans-fil Sony WF-1000XM3 avec réduction de bruit active qui passent à 169,99 € livrés gratuitement alors qu'on les trouve ailleurs à plus de 220 €. Performants, confortables et modernes, les écouteurs True Wireless Sony WF-1000XM3 s'inviteront naturellement dans votre quotidien. Livrés avec un boîtier de charge/transport, ils bénéficieront d'une autonomie maximale de 24 heures tout en assurant une écoute de haute qualité grâce à la puce Bluetooth 5.0. Gérez facilement votre lecture avec les commandes tactiles sur l'oreillette, prenez des appels dans les meilleures conditions avec les deux microphones intégrés et discutez facilement sans avoir besoin de retirer vos écouteurs grâce à la fonction Quick Attention.


> Voir l'offre
30,59 €Support écran PC / TV pivotant sur pied (26 à 55 pouces, max 45 kg) à 30,59 €
Valable jusqu'au 09 Mai

Amazon propose actuellement le support écran PC / TV pivotant sur pied Bontec à 30,59 € seulement. Ce support est adapté aux écrans plats de 26 à 55 pouces LED, LCD et PLASMA à compatibilité VESA de 100x100 jusqu'à 400x400.  Il supporte jusqu'à 45Kg, est régable en hauteur et cache les câbles disgracieux à l'arrière. Vous pouvez le mettre par exemple sur un meuble pour surélever votre TV ou votre PC (et mettre une enceinte dessous ?) sans avoir besoin de percer le mur.


> Voir l'offre
75,99 €Boîtier Fractal Design Define Mini C à 75,99 €
Valable jusqu'au 10 Mai

RueDuCommerce propose actuellement l'excellent boîter moyen tour Fractal Design Define Mini C à 75,99 € alors qu'on le trouve ailleurs à plus de 99 €. Le boitier PC Define Mini C est une plateforme conçue pour délivrer la l'une des meilleures performances de refroidissement et de silence.


> Voir l'offre

Sujets relatifs
affichage image en %
probleme affichage de l'image avec dreamweaver cs3
affichage image jpg
JS affichage aléatoire d'une image dans un tableau
Probleme d'affichage d'image sur mon site
Affichage d'image
Probleme affichage image gif animees
Affichage bizarre
empêcher l'affichage d'icone "sauvegarde image"
Affichage Image Plein Fenêtre
Plus de sujets relatifs à chargement d''image et affichage bizarre !!!
 > Tous les forums > Forum Forum des Webmasters