A voir également:
- L'image ne peut être affichée car elle contient des erreurs
- Image iso - Guide
- Acronis true image - Télécharger - Sauvegarde
- Roland souhaite calculer le montant total des ventes de son magasin. le fichier contient, pour chaque produit, la quantité vendue et le prix unitaire. calculez le montant total des ventes. ✓ - Forum Excel
- Reduire taille image - Guide
- Légender une image - Guide
11 réponses
Bonjour a tous,
j'ai eu le même problème et j'ai compris d'où il venais j'en fait donc profiter tout le monde...
En fait lorsque on fait une image en PHP le fichier ne doit RIEN contenir d'autre que l'image ainsi si vous mettez le code suivant
dans un fichier nommé ImageMaker.php
Attention : pas de saut de ligne ni avant ni après les balises PHP !
Après pour exploiter cette image voici un exemple : "Open the picture.php"
<img src="ImageMaker.php" border = 5 width='800' heigth="600">
Dans ce fichier c'est ce que vous voulez .. c'est pas critique ...
Si tout s'est bien passé vous devriez avoir une image avec un disque jaune en haut à droite (code initial du disque https://www.php.net/manual/fr/function.imagecreatetruecolor.php
j'ai eu le même problème et j'ai compris d'où il venais j'en fait donc profiter tout le monde...
En fait lorsque on fait une image en PHP le fichier ne doit RIEN contenir d'autre que l'image ainsi si vous mettez le code suivant
<?php $png = imagecreatetruecolor(800, 600); imagesavealpha($png, true); $trans_colour = imagecolorallocatealpha($png, 0, 0, 0, 127); imagefill($png, 0, 0, $trans_colour); $Yellow = imagecolorallocate($png, 255, 255, 0); imagefilledellipse($png, 650, 150, 200, 200, $Yellow ); header("Content-type: image/png"); imagepng($png); imagedestroy($png); ?>
dans un fichier nommé ImageMaker.php
Attention : pas de saut de ligne ni avant ni après les balises PHP !
Après pour exploiter cette image voici un exemple : "Open the picture.php"
<img src="ImageMaker.php" border = 5 width='800' heigth="600">
Dans ce fichier c'est ce que vous voulez .. c'est pas critique ...
Si tout s'est bien passé vous devriez avoir une image avec un disque jaune en haut à droite (code initial du disque https://www.php.net/manual/fr/function.imagecreatetruecolor.php
faut que tu mettent ce code pour qu'il reconnaisse le format :
header ("Content-type: image/jpeg");
header ("Content-type: image/png");
header ("Content-type: image/jpeg");
header ("Content-type: image/png");
Tu dois mettre ce code avant toute chose
header ("Content-type: image/jpeg"); // pour une image jpg header ("Content-type: image/png");//pour une iamge png ...etc...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si tu as crée ton image sur une page à part comme :
image.php
et que tu souhaite l'appeler sur une autre page n'utilise pas la fonction "include" ou je ne sais quoi.
Utilises la balise <img src="image.php" alt="image"/>
J'ai eu le même souci que toi, et je l'ai résolu de cette manière !
A plus !
image.php
et que tu souhaite l'appeler sur une autre page n'utilise pas la fonction "include" ou je ne sais quoi.
Utilises la balise <img src="image.php" alt="image"/>
J'ai eu le même souci que toi, et je l'ai résolu de cette manière !
A plus !
LOL si vous avez un espace AVANT le balise <?php ca ne fonctionnera pas. Pour moi c'est comme ca si j'enlève cette espace l'image s'affiche. Donc le code doit commencer à la ligne 1.
J'ai le même problème.
Même en mettant uniquement
<?php
header("Content-type: image/png"); //la ligne qui change tout !
$x = 50; //largeur de mon image en PIXELS uniquement !
$y = 100; //hauteur de mon image en PIXELS uniquement !
/* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
$image = imagecreatetruecolor($x,$y);
imagepng($image); //renvoie une image sous format png
imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
?>
qui est présenté en tuto ici:
https://mtodorovic.developpez.com/php/gd/?page=page_2
Ca m'affiche le même message d'erreur !
Même en mettant uniquement
<?php
header("Content-type: image/png"); //la ligne qui change tout !
$x = 50; //largeur de mon image en PIXELS uniquement !
$y = 100; //hauteur de mon image en PIXELS uniquement !
/* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
$image = imagecreatetruecolor($x,$y);
imagepng($image); //renvoie une image sous format png
imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
?>
qui est présenté en tuto ici:
https://mtodorovic.developpez.com/php/gd/?page=page_2
Ca m'affiche le même message d'erreur !
Bonjour,
Juste pour info, vous avez une solution qui à mon sens est plus intéressante que GD, c'est l'élément CANVAS en HTML5:
http://html5.immo-scope.com/index.php?page=html5/elementCanvasIntro
et ici comment prendre en compte les nouveaux éléments HTML5:
http://html5.immo-scope.com/index.php?page=html5/premierePageHtml5
Avec ça, CANVAS fonctionne très bien même sous IE6/IE7/IE8....
A+
Juste pour info, vous avez une solution qui à mon sens est plus intéressante que GD, c'est l'élément CANVAS en HTML5:
http://html5.immo-scope.com/index.php?page=html5/elementCanvasIntro
et ici comment prendre en compte les nouveaux éléments HTML5:
http://html5.immo-scope.com/index.php?page=html5/premierePageHtml5
Avec ça, CANVAS fonctionne très bien même sous IE6/IE7/IE8....
A+
Ca ne change rien du tout... il faut le mettre où ce code ?
Pas avant la balise php quand meme ? :-/
Pas avant la balise php quand meme ? :-/
Je pense que c'est juste après la balise php. Mais j'ai des soucis aussi... Alors ...
Je pense donc que ce n'est pas juste une histoire de "headers" vu que j'ai le meme message, que je ne demande l'affichage directement, et que ça deconne ponctuellement seulement. Je vais raconter mes petites misères mais ça peut représenter une piste vu que ça fonctionne quand meme.
Je récupère un texte dans une base, et GD me le convertit bien en image. Mais quand je créé un nouveau texte parfois ça ne fontionne pas.
Je n'avais pas réussi en modifiant les headers, j'ai donc demandé à ce qu'il m'enregistre l'image que j'appelle ensuite.
Bon je vous préviens le code est pas terrible.
Le fichier create_image.php :
<?php
$im = imagecreate(480, 130);
$bg = imagecolorallocatealpha($im, 255, 255, 255, 127);
// Création de quelques couleurs
$magenta = imagecolorallocatealpha($im, 255, 0, 255, 75);
$cyan = imagecolorallocatealpha($im, 0, 161, 255, 75);
$jaune = imagecolorallocatealpha($im, 255, 255, 0, 75);
$col_ellipse2 = imagecolorallocatealpha($im,108, 155, 200,75);
$col_ellipse = imagecolorallocatealpha($im, 209, 89, 33,50);
$bleu_fonce = imagecolorallocate($im, 0, 46, 95);
$jaune_clair = imagecolorallocate($im, 255, 243, 191);
$grey = imagecolorallocate($im, 158, 102, 56);
imagefilledrectangle($im, 0, 0, 399, 29, $transparent);
// Remplacez le chemin par votre propre chemin de police
$font = 'polices/vivaldi.ttf';
// Ajout texte de fond transparent
//imagettftext($im, 40, 0, -5, 80 , $bleu_trans, $font, $texteaconvertir);
// On dessine l'ellipse
$x_magenta = mt_rand(350, 400);
$y_magenta = mt_rand(50, 75);
$x_jaune = mt_rand(350, 400);
$y_jaune = mt_rand(50, 75);
$x_cyan = mt_rand(350, 400);
$y_cyan = mt_rand(50, 75);
imagefilledellipse ($im, $x_magenta, $y_magenta, 15, 15, $magenta);
imagefilledellipse ($im, $x_jaune, $y_jaune, 15, 15, $jaune);
imagefilledellipse ($im, $x_cyan, $y_cyan, 15, 15, $cyan);
imageellipse($im, 150, 45, 300, 70, $col_ellipse);
imageellipse($im, 160, 50, 320, 90, $col_ellipse2);
imagettftext($im, 34, 0, 15, 58 , $grey, $font, $texteaconvertir);
// Ajout d'ombres au texte
imagettftext($im, 34, 0, 17, 61 , $jaune_clair, $font, $texteaconvertir);
// Ajout du texte
imagettftext($im, 34, 0, 16, 59, $bleu_fonce, $font, $texteaconvertir);
$adresse = "img/img_texte/".$id.".png";
imagepng($im, $adresse); // on enregistre l'image dans le dossier "images"
?>
et dans le fichier de contenu :
...
$texteaconvertir = $rubrique['titre'];
include ("create_image.php");
<img class=\"img_text\" src=\"img/img_texte/".$rubrique['id'].".png\" alt=\"".$texteaconvertir."\"></div>
imagedestroy($im);
Je pense donc que ce n'est pas juste une histoire de "headers" vu que j'ai le meme message, que je ne demande l'affichage directement, et que ça deconne ponctuellement seulement. Je vais raconter mes petites misères mais ça peut représenter une piste vu que ça fonctionne quand meme.
Je récupère un texte dans une base, et GD me le convertit bien en image. Mais quand je créé un nouveau texte parfois ça ne fontionne pas.
Je n'avais pas réussi en modifiant les headers, j'ai donc demandé à ce qu'il m'enregistre l'image que j'appelle ensuite.
Bon je vous préviens le code est pas terrible.
Le fichier create_image.php :
<?php
$im = imagecreate(480, 130);
$bg = imagecolorallocatealpha($im, 255, 255, 255, 127);
// Création de quelques couleurs
$magenta = imagecolorallocatealpha($im, 255, 0, 255, 75);
$cyan = imagecolorallocatealpha($im, 0, 161, 255, 75);
$jaune = imagecolorallocatealpha($im, 255, 255, 0, 75);
$col_ellipse2 = imagecolorallocatealpha($im,108, 155, 200,75);
$col_ellipse = imagecolorallocatealpha($im, 209, 89, 33,50);
$bleu_fonce = imagecolorallocate($im, 0, 46, 95);
$jaune_clair = imagecolorallocate($im, 255, 243, 191);
$grey = imagecolorallocate($im, 158, 102, 56);
imagefilledrectangle($im, 0, 0, 399, 29, $transparent);
// Remplacez le chemin par votre propre chemin de police
$font = 'polices/vivaldi.ttf';
// Ajout texte de fond transparent
//imagettftext($im, 40, 0, -5, 80 , $bleu_trans, $font, $texteaconvertir);
// On dessine l'ellipse
$x_magenta = mt_rand(350, 400);
$y_magenta = mt_rand(50, 75);
$x_jaune = mt_rand(350, 400);
$y_jaune = mt_rand(50, 75);
$x_cyan = mt_rand(350, 400);
$y_cyan = mt_rand(50, 75);
imagefilledellipse ($im, $x_magenta, $y_magenta, 15, 15, $magenta);
imagefilledellipse ($im, $x_jaune, $y_jaune, 15, 15, $jaune);
imagefilledellipse ($im, $x_cyan, $y_cyan, 15, 15, $cyan);
imageellipse($im, 150, 45, 300, 70, $col_ellipse);
imageellipse($im, 160, 50, 320, 90, $col_ellipse2);
imagettftext($im, 34, 0, 15, 58 , $grey, $font, $texteaconvertir);
// Ajout d'ombres au texte
imagettftext($im, 34, 0, 17, 61 , $jaune_clair, $font, $texteaconvertir);
// Ajout du texte
imagettftext($im, 34, 0, 16, 59, $bleu_fonce, $font, $texteaconvertir);
$adresse = "img/img_texte/".$id.".png";
imagepng($im, $adresse); // on enregistre l'image dans le dossier "images"
?>
et dans le fichier de contenu :
...
$texteaconvertir = $rubrique['titre'];
include ("create_image.php");
<img class=\"img_text\" src=\"img/img_texte/".$rubrique['id'].".png\" alt=\"".$texteaconvertir."\"></div>
imagedestroy($im);
Ce problème peut avoir été raisons, dans tous les cas il s'agit d'une erreur ou notification retourné par php.
ça se produit plus souvent dans un environnement de développement puisque tous les erreurs sont configurées pour être afficher, et moins souvent sur les serveurs en production puisque les erreurs non critiques ne sont pas affichées.
Dans mon cas il s'agit simplement d'une variable qui été "undefined" donc php normalement affiche une notification et c'est cette dernière qui fait échouer la génération de l'image.
Pour résoudre ce problème:
1- la meilleur chose c'est revérifier le code, pour déceler les éventuels erreur / notification.
2- pour masquer les erreurs non bloquante on met au début du script: error_reporting(E_ALL & ~E_NOTICE);
ça se produit plus souvent dans un environnement de développement puisque tous les erreurs sont configurées pour être afficher, et moins souvent sur les serveurs en production puisque les erreurs non critiques ne sont pas affichées.
Dans mon cas il s'agit simplement d'une variable qui été "undefined" donc php normalement affiche une notification et c'est cette dernière qui fait échouer la génération de l'image.
Pour résoudre ce problème:
1- la meilleur chose c'est revérifier le code, pour déceler les éventuels erreur / notification.
2- pour masquer les erreurs non bloquante on met au début du script: error_reporting(E_ALL & ~E_NOTICE);