[RESOLU] Probleme de header avec fonction imagefilter

Petit nouveau ! | 5 Messages

17 févr. 2021, 12:18

Bonjour à tous,
J'utilise la fonction imagefilter pour pixeliser mes images, le code suivant fonctionne parfaitement :

Code : Tout sélectionner

$nom_fichier='../imgList/cat.jpg'; $image = @imagecreatefromjpeg($nom_fichier); header('Content-Type: image/jpg'); imagefilter($image, IMG_FILTER_PIXELATE, 13, true); imagejpeg($image); imagedestroy($image);
Le problème c'est que le navigateur m'affiche uniquement l'image, je ne peux pas ajouter du code...dès que j'en ajoute cela génère l'erreur :
L'image https://localhost/inc/showimage.php ne peut être affichée car elle contient des erreurs
Que ce soit du code Php ou HTML...même erreur
Je pense que cela vient du fait de la ligne header...si je retire cette ligne l’affichage de l'image plante.

Quelqu'un à une idée ? Merci d'avance !

Mammouth du PHP | 2703 Messages

17 févr. 2021, 14:07

pour que cela marche, il faut que cela retourne l'image et c'est tout. cela n'a aucun sens de vouloir ajouter du html ensuite dans ce script. la page html a une balise img avec comme src https://localhost/inc/showimage.php et peut avoir avant et après du html.

Petit nouveau ! | 5 Messages

17 févr. 2021, 14:17

En fait je dois écrire du code car je compte afficher dynamiquement plusieurs images.
Ainsi le nom de mes images sont stockées dans ma bdd mysql. L'idée c'est de boucler sur la table 'Images' et d'afficher sur une même pages toutes les images de ma bdd, ainsi que les paramètres de pixelisatlon... d'où la nécessité d'écrire du code.

Mammouth du PHP | 2703 Messages

17 févr. 2021, 14:24

plusieurs images -> plusieurs balises img dans la page html.
il est aussi possible de créer un montage de plusieurs images en une seule mais cela doit se terminer par
imagejpeg($image);
imagedestroy($image);

Petit nouveau ! | 5 Messages

17 févr. 2021, 14:38

Je pense que je m'exprime mal.
En fait je dois afficher des images de façon dynamique.

Les images sont stockées dans un repertoires.
Les variables d'effet (le degré de pixelisatlon) et le nom des images sont stockées dans une table de ma bdd mysql.

Je dois pouvoir lister (afficher) mes images en applicant la fonction imagefilter (pour les pixelliser) pour chaque image d'où le soucis d'ecriture de code.

Mammouth du PHP | 2703 Messages

17 févr. 2021, 14:41

le code html de la page est généré par du php qui va parcourir le contenu du répertoire, de la bdd et ajouter des balises img avec comme src showimage.php?param=value

Petit nouveau ! | 5 Messages

17 févr. 2021, 14:49

Effectivement, pas de soucis pour cela. J'arrive sans problème a récupérer le nom de mon image et la variable de pixellisation depuis ma bdd.

Le problème c'est l'affichage de l'image avec la fonction imagefilter (que je dois utiliser pour appiiquer l'effet de pixellisation). Pour faire apparaitre chaque image avec son effet je dois passer par header(), voir mon code plus haut...et du coup impossible d'écrire cette boucle mysql.

Mammouth du PHP | 2703 Messages

17 févr. 2021, 14:55

la boucle est dans le code php qui génère les balises img
dans showimage.php il faut savoir grâce au paramètre passé quelle est l'image à manipuler, pas de boucle à faire.

Petit nouveau ! | 5 Messages

17 févr. 2021, 15:06

Je dois :
Récupérer le nom de chaque image
Appliquer l'effet à chaque image
Afficher chaque image
Le tout dans une même page.

Mammouth du PHP | 2703 Messages

17 févr. 2021, 18:55

dans le code php qui génère la page html :
https://www.php.net/manual/fr/function.glob.php

afficher chaque image dans la boucle :
<img src="showimage.php?image<?php echo $filename; ?>" ... />

dans showimage.php faire le traitement à partir du paramètre image.