Texte incrusté sur une image

NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007 - 10 nov. 2005 à 11:58
psychosic Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 11 novembre 2005 - 11 nov. 2005 à 00:01
Bonjour tout le monde !

Comme vous avez pu le lire, j'ai un problème avec les images et les imagestring. Voici déjà mon code :



<hr size="2" width="100%">

$image = imagecreatefromjpeg('../images/' . $name);

$image_mini = imagecreatetruecolor($width, $height);

imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $width, $height, $taille[0], $taille[1]);

$blanc = imagecolorallocate($image, 255, 255, 255);

if ($stat == 'mini')

{

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

}

else

{

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

}

imagedestroy($image);



<hr size="2" width="100%">

Mon problème, donc, est qu'il écrit bien le string sur l'image
"img_mini" (une copie resizée de l'image de base), mais pas sur la
grande image...

Quelqu'un pourrait il me dire ou mon raisonnement fait défaut?

Merci !

12 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 nov. 2005 à 12:20
Salut,



$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc = imagecolorallocate($image_mini, 255, 255, 255);

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 12:27
Merci déjà pour ta réponse ! Cependant, aucun changement.... Je
rappelle que le string vient bien se mettre sur $image_mini, mais pas
sur $image...si ca peut aider, voila le code tel qu'il est réellement :



<hr size="2" width="100%">

if (preg_match("!bmp!", $taille['mime']))

die('Les .bmp ne sont pas reconnus. Veuillez uploader des fichiers jpeg/jpg/png.');

elseif (preg_match("!jpe?g!", $taille['mime']))

$image = imagecreatefromjpeg('../images/' . $name);

elseif (preg_match("!png!", $taille['mime']))

$image = imagecreatefrompng('../images/' . $name);

else

die('Format non reconnu. Création d\'image annulée.');

if (is_dir('../images/thumbs'))

{

$image_mini = imagecreatetruecolor($width, $height);

imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $width, $height, $taille[0], $taille[1]);

$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc = imagecolorallocate($image_mini, 255, 255, 255);

if ($stat == 'mini')

{

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

imagedestroy($image_mini);

}

else

{

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

imagedestroy($image);

}

}

else

{

mkdir('../images/thumbs');

crea_samples($image, $width_max, $height_max, $stat);

}
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
10 nov. 2005 à 12:51
J'dirais plutôt

$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc_mini = imagecolorallocate($image_mini, 255, 255, 255);

et



imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);

imagestring($image, 6, 1, 1, "Salut!", $blanc);
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 nov. 2005 à 12:53
ouais je me suis trompé j'ai vu ça après...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 13:07
Arf, ca ne change rien, le message vient bien s'écrire sur l'image mini
(resampled), mais pas sur l'image "de base", la grosse ($image)...



<hr size="2" width="100%">

$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc_mini = imagecolorallocate($image_mini, 255, 255, 255);

if ($stat == 'mini')

{

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

imagedestroy($image_mini);

}

else

{

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

imagedestroy($image);

}



<hr size="2" width="100%">

Voila ce que j'ai changé sur vos recommendations.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 13:43
Hello,

bah, tu fais un if() else, c'est normal...
Si la condition pour le if() est remplie, ton code n'ira pas sur le else.
Toi tu veux :
- par défaut, écrire sur la grande image
- si ta variable === 'mini', écrire aussi sur la petite.

Donc :
$blanc = imagecolorallocate($image, 255, 255, 255);
$blanc_mini = imagecolorallocate($image_mini, 255, 255, 255);
imagestring($image, 6, 1, 1, "Salut!", $blanc);
imagejpeg($image, '../images/' . $name, 75);
imagedestroy($image);
if ($stat == 'mini')
{
imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);
imagejpeg($image_mini, '../images/thumbs/' . $name, 75);
imagedestroy($image_mini);
}
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 14:28
Effectivement, en fait je m'encombrais à faire deux appels à cette
fonction, un pour créer une image taille réelle, un autre pour une
image taille mini... j'ai changé le code en conséquence pour créer les
deux en même temps car ca économise un appel ;) (il doit TOUJOURS y
avoir ET la mini ET la normale de créees). Mais maintenant, non
seulement il ne met pas le string sur l'image "principale", mais en
plus, il ne crée plus la miniature.... :'(



<hr size="2" width="100%">

if (preg_match("!bmp!", $taille['mime']))

die('Les .bmp ne sont pas reconnus. Veuillez uploader des fichiers jpeg/jpg/png.');

elseif (preg_match("!jpe?g!", $taille['mime']))

$image = imagecreatefromjpeg('../images/' . $name);

elseif (preg_match("!png!", $taille['mime']))

$image = imagecreatefrompng('../images/' . $name);

else

die('Format non reconnu. Création d\'image annulée.');

if (is_dir('../images/thumbs'))

{

$image_mini = imagecreatetruecolor(100, 100);

$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc_mini = imagecolorallocate($image_mini, 255, 255, 255);

imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $width, $height, $taille[0], $taille[1]);

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

imagedestroy($image);

imagedestroy($image_mini);

}
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 14:57
Bon en fait j'ai adapté mon code "au dessus", c'est à dire celui qui appelle cette fonction.

Le code acutel est donc celui ci :



<hr size="2" width="100%">



function crea_samples($image, $width_max, $height_max, $stat)

{

$name = $image;

$taille = getimagesize('../images/' . $name);

$width = $taille[0];

$height = $taille[1];

unset($image);



if ($width_max > $width AND $height_max > $height)

{

return (-1);

}

if ($width > $width_max)

{

$convert = $width_max / $width;

$width = $width_max;

$height = ceil($height * $convert);

}

if ($height > $height_max)

{

$convert = $height_max / $height;

$height = $height_max;

$width = ceil($width * $convert);

}

$img_vide = imagecreate(200,50);

if (preg_match("!bmp!", $taille['mime']))

die('Les .bmp ne sont pas reconnus. Veuillez uploader des fichiers jpeg/jpg/png.');

elseif (preg_match("!jpe?g!", $taille['mime']))

$image = imagecreatefromjpeg('../images/' . $name);

elseif (preg_match("!png!", $taille['mime']))

$image = imagecreatefrompng('../images/' . $name);

else

die('Format non reconnu. Création d\'image annulée.');

if (is_dir('../images/thumbs'))

{

$blanc = imagecolorallocate($img_vide, 255, 255, 255);

imagestring($image, 4, 35, 15, "Salut les Zér0s !", $blanc);

$image_mini = imagecreatetruecolor($width, $height);

imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $width, $height, $taille[0], $taille[1]);

if ($stat == 'mini')

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

else

imagejpeg($image_mini, '../images/' . $name, 75);

imagedestroy($image);

}

else

{

mkdir('../images/thumbs');

crea_samples($image, $width_max, $height_max, $stat);

}

}



<hr size="2" width="100%">



Pour le if / else, c'est normal, j'appelle soit la création d'une
miniature, soit la création d'une image "taille réelle". Cependant,
quand j'appelle la fonction pour une miniature, le string est bien
affiché, par contre, si j'appelle la fonction pour l'image taille
réelle, l'image est bien crée, mais le string lui n'est plus affiché !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 15:11
if ($stat == 'mini')

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

else

imagejpeg($image_mini, '../images/' . $name, 75);

imagedestroy($image);



Y a pas un petit blème là...?



2 fois $image_mini, et tu détruis uniquement $image



Et ton mkdir...tu pourrais pas plutôt le faire en début de fonction,
lol? Plutôt qu'à la fin et d'être obligé de rappeler ta fonction...?
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 15:25
Bon en fait c'est parceque j'étais revenu sur mon code de base, bref, voici le corrigé :



<hr size="2" width="100%">

if ($stat == 'mini')

{

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

imagedestroy($image_mini);

}

else

{

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

imagedestroy($image);

}



<hr size="2" width="100%">

Et j'ai bien mis la création du dossier au début, merci de l'idée :)

Par contre, j'ai toujours mon problème... apparement, d'après nexen,
les renvois des fonctions imagecreatetruecolor et imagecreatefromjpeg
sont différents... le premier renvoie une ressource, le second, un
identifiant d'image.... peut être que le second traite différement, et
donc, le imagestring ne marche pas dessus ?
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
10 nov. 2005 à 15:26
Mauvais copier/coller, désolé, voila le code complet :



function crea_samples($image, $width_max, $height_max, $stat)

{

if (!is_dir('../images/thumbs'))

{

mkdir('../images/thumbs');

crea_samples($image, $width_max, $height_max, $stat);

}

$name = $image;

$taille = getimagesize('../images/' . $name);

$width = $taille[0];

$height = $taille[1];

unset($image);



if ($width_max > $width AND $height_max > $height)

{

return (-1);

}

if ($width > $width_max)

{

$convert = $width_max / $width;

$width = $width_max;

$height = ceil($height * $convert);

}

if ($height > $height_max)

{

$convert = $height_max / $height;

$height = $height_max;

$width = ceil($width * $convert);

}

if (preg_match("!bmp!", $taille['mime']))

die('Les .bmp ne sont pas reconnus. Veuillez uploader des fichiers jpeg/jpg/png.');

elseif (preg_match("!jpe?g!", $taille['mime']))

$image = imagecreatefromjpeg('../images/' . $name);

elseif (preg_match("!png!", $taille['mime']))

$image = imagecreatefrompng('../images/' . $name);

else

die('Format non reconnu. Création d\'image annulée.');

$image_mini = imagecreatetruecolor($width, $height);

imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $width, $height, $taille[0], $taille[1]);

$blanc = imagecolorallocate($image, 255, 255, 255);

$blanc_mini = imagecolorallocate($image_mini, 255, 255, 255);

if ($stat == 'mini')

{

imagestring($image_mini, 6, 1, 1, "Salut!", $blanc_mini);

imagejpeg($image_mini, '../images/thumbs/' . $name, 75);

imagedestroy($image_mini);

}

else

{

imagestring($image, 6, 1, 1, "Salut!", $blanc);

imagejpeg($image, '../images/' . $name, 75);

imagedestroy($image);

}

}
0
psychosic Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 11 novembre 2005
11 nov. 2005 à 00:01
je serait toi je ferais:



$image_mini = imagecreatetruecolor($width, $height);

$image = imagecreatetruecolor($taille[0], $taille[1]);



car ta variable image ne contient qu'un lien alors que ta variable $iùage_mini contient bien une image.
0
Rejoignez-nous