Vous n'êtes pas identifié.
Uld et PHP sont copains.
PHP et GD2 sont copains.
Mais Uld et GD2 ne sont pas copains, bouh pas drole.
Bref, je fais appel à contribution pour ceux qui se sentent l'envie de m'aider sur un problème avec GD2.
Le problème est le suivant :
Soit une image au format PNG : mon_image.png situé à l'emplacement /home/foo/mon_image.png
Cette image à les caractéristique suivante : 100pixels de large sur 100pixels de haut et est intégralement noire.
But de l'exercice :
-modifier mon_image.png pour qu'un rectangle de 4pixels dont le coin haut gauche se situe en x=50; y=50 devienne transparent.
-le reste de l'image ne doit pas être modifié
-l'image doit pouvoir être réutilisée pour pouvoir rendre un nouveau rectangle transprent à des coordonées différentes.
Contraintes:
-on a du png on veut du png, pas la peine de me parler de gif ou autre.
-on utilise une image de départ, imagecreatetruecolor() est déconseillé, on préfèrera imagecreatefrompng()
Récompense:
-aucune, sinon ma gratitude éternelle et certainement une nouvelle fonctionnalité en jeu sous peu.
A vos marques, prêts, partez.
Hors ligne
t'as oublié:
Vous avez 24h xD
Hors ligne
C'est loin d'être ma spécialité, mais le but, c'est de modifier un fichier "mon_image.php" ? On parlait pas de "mon_image.png" ?
Désolé si j'ai rien compris...
Hors ligne
Uld pour commencé est-ce que ton image à un canal alpha? J'ai le souvenir d'avoir lu quelques docs la dessus, si je les retrouves je te fait parvenir ça...
Hors ligne
Momo: faute de frappe.
Lyraa: mon image à ce que tu veux tant que c'est du png. Mais à la base c'estune simple image noire : "gimp, nouveau fichier, pot de peinture noir, enregistrer au format png".
Hors ligne
Tu crées une couleur "noir transparent" avec imagecolorallocatealpha(), et tu crées un rectangle normalement avec imagerectangle().
Hors ligne
J'avais pas pensé à l'allocatealpha, j'ai encore fait ça comme un porc
Hors ligne
Subotai a écrit:
Tu crées une couleur "noir transparent" avec imagecolorallocatealpha(), et tu crées un rectangle normalement avec imagerectangle().
J'ia pensé à ca, sauf que j'ai pas réussi, tu aurais un exemple??
Hors ligne
$im = @imagecreatefrompng("img.png"); $red = imagecolorallocate($im, 255, 0, 0); imagefilledrectangle($im, 50, 50, 54, 54, $red); imagecolortransparent($im, $red); imagepng($im);
Tu dessines ton carré, puis tu le rend transparent.
Dernière modification par Kordoch (31-08-2009 12:15:55)
Hors ligne
Ah oui, effectivement il est possible que imagerectangle mette un rectangle noir transparent par-dessus l'image, du coup les pixels modifiés restent noirs. Il faut peut-être créer une image intermédiaire de 100x100, entièrement remplie de couleur noire transparente, et l'insérer dans l'image que tu veux modifier avec imagecopy(). Là, ça remplacera les pixels de ton image par des pixels noirs transparents.
Hors ligne
Et on peut réutiliser ça pour les monstres après vous croyez si on veut faire des cas particuliers genre "forme brumeuse" ?
Hors ligne
Non c'est différent lunch, là c'est pour une application systèmatique par traitement de PHP.
Pour tes avatars de formes brumeuses il faut jouer avec l'opacité des pixel et à ma connaissance ca n'est pas possible en gif.
Hors ligne
http://corrin.geekwu.org/~bastien/arkhan/img_gd.html
Je me suis affranchi du chargement en créant from scratch, mais c'est pareil, hein
Bien sûr, une rapide lecture du thread m'a fait rater la réponse de Kordoch ... :$
Dernière modification par Irulan (31-08-2009 15:05:08)
Hors ligne
Merci Irulan et Kordoch, vous me rassurez, je susi pas completement rouillé
A part que je sais pas définir le rectangle correctement j'ai fait un carré de 46x46 commencant en 4,4 ...
Par contre que pensez vous de l'utilisation d'imagecopy pour l'image résultante du masque, pour pouvoir réutiliser la partie définition du trou de manière indépendante à la partie mise en transparence.
Dernière modification par Florane (31-08-2009 15:39:38)
Hors ligne
Ok merci à tous, une réponse satisfaisante à été donné (merci kordoch) et je l'ai appliquée avec succès.
Attendez vous à une surprise de taille sous peu.
Merci à tous ceux qui ont apporté leurs idées et bouts de code; kordoch, florane et Irulan
Hors ligne
10 contre 1 que c'est pour le chapeau de Wormir... ^^
Hors ligne
Tu mises quoi?
Hors ligne
je sais pas pourquoi, mais ça sent plutôt l'exploration de cartes... hmmmm à voir
Wormir, impatient
Hors ligne
Pas besoin de faire un sondage sur les professions des joueurs, c'est déjà tout vu : développeurs web, tous !
(Je me permets de digresser car on est sur un forum bla-bla ).
Hors ligne
Développeur web oui c'est mon job officiel, mais pas sûr que ce soit l'intitulé de tous ceux qui ont répondu (même si certains ont un background d'informaticien)
Hors ligne
Béh, vu la que la majorité des trucs à coder derrière sont déjà en place, on finit tous par faire du lifting de sites web
Hors ligne
Viens de tout lire et a mal a la tête. J'ai rien pigé. J'suis pas développeur ou codeur moi ^^
En tout cas, bravo si ca a marché ! la prochaine fois que je dois faire une mise a jour je ferais un topic :p
Hors ligne
Ni dev, ni codeur pour ma part
Juste un glandeur de Fonctionnel avec une formation mécanique .
Mais comme dit Uld, background informatique (par goût), parce que c'est mieux de comprendre ce que font les gens qui créent ce que tu spécifies.
Hors ligne
Informaticien, oui, mais développeur web, non. Ma langue maternelle c'est le C/Unix
Le web, c'est pas drôle ...
Hors ligne
C'est marrant je suis de l'avis opposé. Le dev logiciel c'est pas drôle.
Hors ligne