[php]headers et image [resolu]

slt

voila j’utilise une fonction pour redimensionner les images
cette fonction detruit l’image pour la recree a la taille desire

le fait d’utilise les fonction gd genere t il une entete http ?
les 4 fonctions que j’utilise sont :
ImageCreateTrueColor
ImageCreateFromPng
ImageCopyResampled
ImagePng

car si je veut mettre un header location ensuite cela me genere un erreur

Cannot modify header information - headers already sent by (…

merci

quand tu crée tes images tu ne met pas de

header(‘Content-type: image/png’);

au moins ?
j’imagine que non.

c’est quoi l’erreur exacte ?

voici la fonction :

[cpp]

<?php function insert_image($image){ $sm = 500; // obtenir la taille de l'image $arr = getimagesize("$image"); // initialisation de la variable largeur $largeur=$arr[0]; // initialisation de la variable hauteur $hauteur=$arr[1]; if( ( $largeur < $sm ) && ( $hauteur < $sm ) ){ // si vrai retourne les mêmes valeurs d'origine de l'image $dest_largeur=$largeur; $dest_hauteur=$hauteur; }else{ //si la largeur est la plus grande valeur if( $largeur > $hauteur ) { //la largeur est la plus grande valeur $facteur = ($largeur/$sm); }else{ //la hauteur est la plus grande valeur $facteur = ($hauteur/$sm); } //affectation des nouvelles valeurs $dest_largeur=($largeur/$facteur); $dest_hauteur=($hauteur/$facteur); } $im = ImageCreateTrueColor ($dest_largeur, $dest_hauteur); if(strtolower($ext) == 'png'){ $source = ImageCreateFromPng ($image); }else{ $source = ImageCreateFromJpeg($image); } $largeurSource = imagesx($source); $hauteurSource = imagesy($source); ImageCopyResampled($im, $source, 0, 0, 0, 0, $dest_largeur, $dest_hauteur, $largeurSource, $hauteurSource); if(strtolower($ext) == 'png'){ header('Content-type: image/png'); ImagePng ($im, $image); }else{ header('Content-type: image/jpeg'); ImageJpeg ($im, $image); } } ?> [/cpp]

j’appele ma fonction dans ma page par :
insert_image(’…/…/photos/’.$image,$ext);

et l’erreur :
Warning: Cannot modify header information - headers already sent by (output started at D:\Travail\Serveur\clients\laurent\janeroberts\manager\inc\f_insert_img.php:46) in D:\Travail\Serveur\clients\laurent\janeroberts\manager\inc\f_insert_img.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at D:\Travail\Serveur\clients\laurent\janeroberts\manager\inc\f_insert_img.php:46) in D:\Travail\Serveur\clients\laurent\janeroberts\manager\process\redim_img.php on line 45

mais bon a la ligne 45 de la fonction c’est la balise de fermeture de php

alors ça… :confused:

par contre.

tu devrai arrondir $dest_largeur et $dest_hauteur. Avec ceil() par exemple.

parce que certaine fois le nombre peut etre un entier, et tu ne peut pas créer des bouts de pixels.

ex:

tu trouve un facteur de 2.048 (1024/500)

et la haut est de 500px.

la hauteur finale sera de 500/2.048 = 366.2109375

tu ne peux pas créer une image de 366.2109375 pixels de hauteur.

merci du conseil en effet cela sera mieux

ta focntion renvoi un fichier image, tu ne peux pas l’intégrer dans un fichier en php (car tout ce que génèrera ton fichier php sera soit considéré comme faisant partie de l’image, soit tu auras l erreur que tu rencontre si autre chose est envoyé avant que tu ne déclare le type de sortie :html, image ou autre…)

Il faut que ce fichier soit appelé en tant qu’image par une page html (page html qui peut etre généré par un fichier php)

mais comme j’appelle ma fonction sur une page transitoire ne contenant que du code servant a l’insertion dans la base de donnee cela ne genere rien
donc en fait au final ma page contient l’image et cela pose problème
va falloir que je mettre une redirection en javascript pour contourner le problème alors ca irait ?

elle fait quoi ta page transitoire ? tu fais quoi de ton images ? tu l affiche quand ?

au passage tu ne détruis pas ton image à la fin pour libérer ta mémoire…

voici le cheminement :
formulaire de saisie avec un champ input file

page transitoire :
insertion des infos dans la table
j’applique la fonction pour la redimensionner directement sur le serveur
je prend l’original qui est a 1024 * 800 par ex et je la redimensionne a 800x 600
il n’y aucun affichage en fait et la detruire non puisque c’st la meme sauf qu’elle a ete redimensionne
et en theorie le header pour la redirection en page de confirmation

bon j’ai trouve ou etait l’erreur

apres le ?> il y a avait un espace
voila maintenant ca marche bien