> 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
79,96 €Souris Logitech MX Master 3 (unify, bluetooth, capteur laser) à 79,96 € avec le code ERGO
Valable jusqu'au 09 Mai

LDLC fait une promotion sur la nouvelle souris sans fil Logitech MX Master 3 qui passe à 79,96 € avec le code ERGO alors qu'on la trouve ailleurs à partir de 109 €. Cette souris offre une double connectivité sans fil unify ou bluetooth. 

Elle vous permet de contrôler jusqu'à 3 ordinateurs différents à l'aide d'une seule souris. Copiez et collez du texte d'un écran à un autre, ou encore transférez des fichiers d'un ordinateur à un autre avec une facilité déconcertante.

Conçue pour offrir précision, contrôle et confort aux utilisateurs expérimentés, la souris sans fil Logitech MX Master 3 se caractérise notamment par une forme parfaitement adaptée à la main, des fonctionnalités avancées et une conception incroyable. Elle dispose d'une molette pour le pouce afin de faire défiler le contenu de l'écran latéralement d'un simple mouvement du pouce. Et avec le logiciel Logitech Options vous allez pouvoir paramétrer au mieux votre souris. Ainsi, vous allez pouvoir ajuster la vitesse de défilement, naviguer au sein du contenu sous forme d'onglets, changer d'application, régler le volume et bien d'autres choses. Son capteur laser Dark field vous permettra de l'utiliser sur n'importe quelle surface.


> Voir l'offre
99,98 €Disque dur externe portable Seagate Expansion 5 To USB 3.0 à 99,98 € avec le code AFFAIRE20
Valable jusqu'au 10 Mai

Cdiscount fait une promotion sur le disque dur externe portable Seagate Expansion d'une capacité de 5 To à 99,98 € avec le code promo AFFAIRE20 alors qu'on le trouve ailleurs à partir de 130 €. Ce disque dur externe portable au format 2,5 pouces dispose d'une interface USB 3.0 compatible USB 2.0. Une excellente affaire pour ce disque dur qui offre des débits de 115 Mo/s. Il n'est pas soudé et est donc démontable si vous souhaitez le réutiliser ailleurs (console, NAS, PC). 


> Voir l'offre
29,99 €Ensemble clavier + souris sans fil Logitech MK270 à 29,99 €
Valable jusqu'au 08 Mai

Amazon fait une promotion sur l'ensemble clavier + souris sans fil Logitech MK270 qui passe à 29,99 € alors qu'on le trouve habituellement autour de 35 €. Cet ensemble est composé d'un clavier sans fil Logitech avec des touches silencieuses et d'une souris sans fil adaptée à la forme de la main qui convient aux droitiers comme aux gauchers. Un seul récepteur USB vous permettra d'utiliser ces 2 périphériques sans fil. La livraison est gratuite.


> 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