Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > Imagick
Imagick Forum d'entraide pour l'extension Imagick permettant de manipuler des images en PHP (port de l'API ImageMagick).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2007, 22h35   #1
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 387
Points : 380
Points : 380
Par défaut [ImageMagick] Transparence miniature PNG

Bonjour,

je voudrais créer une miniature d'une image en PNG. J'y arrives très bien mais ma miniature n'est plus transparente : un gorrible fond noir fait son apparition...

J'ai eu beau chercher les différentes fonctions qui pourraient résoudre ce probleme mais je n'ai rien trouvé.

Voilà mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
$nom_image = "barbarux.png";
$format = image_type_to_mime_type("images/barbarux.png");
if ($format != "image/png")
{
	$source = imagecreatefrompng("images/" . $nom_image); // La photo est la source
	imagesavealpha();
 
	$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
 
	// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
	$largeur_source = imagesx($source);
	$hauteur_source = imagesy($source);
	$largeur_destination = imagesx($destination);
	$hauteur_destination = imagesy($destination);
 
 
	// On crée la miniature
	imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
 
 
	// On enregistre la miniature
	imagepng($destination, 'images/miniatures/' . $nom_image);
}
Quelqu'un pourrait-il m'expliquer comment faire s'il vous plait?
Merci à vous tous
Kevin
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2007, 23h48   #2
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Bonjour,

As tu essayé avec
imagecolortransparent ( resource image [, int color] )
pour virer le fond noir ?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2007, 09h28   #3
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 387
Points : 380
Points : 380
Oui j'ai essayé mais le probleme, c'est que ça efface bien le fond noir mais aussi tout le noir présent sur l'image

Tu as pas une autre methode?

MErci pour ton aide
Kevin
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 16h27   #4
Membre éprouvé
 
Avatar de calogerogigante
 
Inscription : avril 2003
Messages : 600
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Belgique

Informations forums :
Inscription : avril 2003
Messages : 600
Points : 451
Points : 451
Tu dois mettre un identifiant d'image dans la fonction :

Code :
1
2
 
imageSaveAlpha($mon_image, true);
Je suis presque sûr que c'est ça ton problème...
__________________
L'informatique vous fait gagner du temps, à condition d'en disposer suffisamment !
Calogero GIGANTE
calogerogigante est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 19h10   #5
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 13
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : février 2005
Messages : 13
Points : 10
Points : 10
Envoyer un message via MSN à 3Dos
J'en suis sur aussi puisque ça a réglé un de mes problèmes de transparence de png
3Dos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 06h36   #6
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 387
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 387
Points : 380
Points : 380
Tout d'abord, merci pour votre aide.

J'ai bien essayé votre technique mais cela ne marche toujours pas (la miniature se retrouve avec un hiddeux fond noir).

Voilà mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
$source = imagecreatefrompng("congelatux.png"); // La photo est la source
$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
imageSaveAlpha($source, true);
imageSaveAlpha($destination, true);
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
 
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
 
// On enregistre la miniature
imagepng($destination, 'mini_congelatux.png');
?>
Est-ce moi qui est mal appliqué les fonctions? Que dois-je faire?

Une fois encore merci pour votre aide
Kevin
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 14h06   #7
Candidat au titre de Membre du Club
 
Inscription : février 2005
Messages : 13
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : février 2005
Messages : 13
Points : 10
Points : 10
Envoyer un message via MSN à 3Dos
Peux-tu essayer avec imagealphablending($image,true); ?

Dans mon script j'ai

imagesavealpha($image, true);
imagealphablending($image, true);

Et ça fonctionne
3Dos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2007, 15h54   #8
Membre éprouvé
 
Avatar de calogerogigante
 
Inscription : avril 2003
Messages : 600
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Belgique

Informations forums :
Inscription : avril 2003
Messages : 600
Points : 451
Points : 451
Oui, et tester aussi la valeur booléenne renvoyée par chacune de ces fonctions pour voir si tout se passe bien....

Edit :

Je crois que ceci

Code :
imageSaveAlpha($source, true);
n'est pas nécessaire dans ton code... Seulement utile pour $destination .
__________________
L'informatique vous fait gagner du temps, à condition d'en disposer suffisamment !
Calogero GIGANTE
calogerogigante est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h16.


 
 
 
 
Partenaires

Hébergement Web