Page 2 sur 5

Re: img_cut3

Publié : jeu. 11/août/2016 0:13
par Shadow
Dobro, il est bien ton prog !
Stp est ce que tu pourrais amélioré de sorte que il prenne les image 32 bits ?
Je veux dire si mon image contient du transparent et bien la couleur de font sera noir :(

J'aimerais bien que la découpe se fasse avec le même font que l'image.
J'ai des image sur font transparent, avec ton programme ça les découpe bien
mais mes font son noir !

Existe t-il des logiciel similaire à se que fait dobro ?
Dobro, je t’incise à continuer ton programme !

Re: img_cut3

Publié : jeu. 11/août/2016 9:03
par Micoute
Tu veux dire "je t'incite" ? Parce que "inciser", il ne va pas aimer.

Re: img_cut3

Publié : jeu. 11/août/2016 9:08
par Zorro
Shadow a écrit :Je veux dire si mon image contient du transparent et bien la couleur de font sera noir :(
l'image (la planche de sprites) que je donne en exemple , est un PNG
donc transparente !!
mon prg fonctionne avec les images transparente


maintenant, tu as peut etre trouvé un bug , dans ce cas, post ici l'image qui pose probleme
(si elle ne fait pas 5 Giga ) entre balise [img ]

de plus une image avec fond noir peut s'afficher transparente avec PB ;)

voir :
TransparentSpriteColor(#Sprite, Couleur)
Description
Change la couleur de transparence d'un Sprite (quand il est affiché avec DisplayTransparentSprite()).

Re: img_cut3

Publié : jeu. 11/août/2016 9:34
par Ar-S
je t’incise à continuer ton programme !
ça doit faire mal :D

Plus serieusement, cherche stocktabpixel ou stocktabpix, c'est une procedure que j'ai posté plusieurs fois.
tu stocks les pixels ds un tableau a 2 dimensions, et dans ta boucle, tu indiques que si le pixel est de la couleur à remplacer, l'alpha passe à 0.
Tu redessines l'images dans une image vide avec les pixels du tableau, tu as ton image transparente.
Tu la sauves.

Re: img_cut3

Publié : jeu. 11/août/2016 14:40
par Shadow
Lol :lol:

Et bien dobro moi je te dit que ça ne fonctionne pas chez moi !
Je ne suis pas en 5.50 hein mais 5.42 LTS. (Peut être pour ça ?)
J'ai essayer en 32 bits et 64, pareil.

Voici ma preuve !:
Image

Re: img_cut3

Publié : jeu. 11/août/2016 17:45
par Zorro
Ligne 82

remplace

Code : Tout sélectionner

CreateImage( #image_sortie,ImageWidth(#image_origine),ImageHeight(#image_origine),32 )
par

Code : Tout sélectionner

CreateImage( #image_sortie,ImageWidth(#image_origine),ImageHeight(#image_origine),32,#PB_Image_Transparent )
desolé pas le temps re regarder mieux , je suis entrain de rentrer du bois ..

Re: img_cut3

Publié : jeu. 11/août/2016 18:28
par Shadow
Merci Zorro mais ça pouvais attendre tu sais ^^
Edit: C'est mieux mais pas encore ça ^^

Moi les bore de mes image sont pas bien rendus.
Une histoire de drawingmode surement :)

Re: img_cut3

Publié : ven. 12/août/2016 9:07
par Zorro
quoiqu'il en soit, je ne suis pas satisfait de ce code
je le referai a partir de zero a l'occase :)

Re: img_cut3

Publié : ven. 12/août/2016 9:48
par Marc56
Avec la modification #PB_Image_Transparent aux deux endroits, ça fonctionne bien.
(avant, les images (transparentes à l'origines) sortaient avec un fond noir, mais c'était avant)

Impressionnant ce programme, chapeau. 8)

Re: img_cut3

Publié : ven. 12/août/2016 10:05
par Zorro
Merci Marc :)

cependant, il n'est pas parfait, il faudrai que j'effectue une deuxieme pass

par exemple sur cette image

Image

la decoupe me donne ceci :

Image
la partie blanche ne devrait pas etre là !!

si je repasse alors, ce resultat dans le Img_cut3 : (donc 2eme pass)
Image

la ça le fait :)

donc, il faudrai que j'envisage de creer plusieurs passage avant sauvegarde :)
(une simple boucle bien placée devrai suffire )

ou peut etre..... qu'il faut que je regarde pourquoi ça ecrit en blanc et pas en Transparent :lol:
j'ai ptete laisser un petit bug trainer ...

bon je retourne rentrer du bois (le courbaturé d'hier :lol: )

Re: img_cut3

Publié : ven. 12/août/2016 11:24
par Shadow
Oui zorro ton programme est bien et je t'encourage vivement à l'améliorer
car c'est un programme qu'on ne trouve pas facilement, rien trouver à par ton code.
Merci à toi :)

Re: img_cut3

Publié : ven. 12/août/2016 11:55
par JohnJohnsonSHERMAN
Super utile quand on veut découper automatiquement une image en plein de petits bouts :P Trés utile ce code, Dobro, merci !

Re: img_cut3

Publié : ven. 12/août/2016 12:46
par Shadow
C'est pour ça que j'incise (A non pardon, j'incite ^^) dobro à amélioré son programme car il est super utile !
Tu devrais en faire un super programme dobro...
Fais nous un super programme comme tu sais si bien les faire, je sais de quoi tu est capable :)

Re: img_cut3

Publié : ven. 12/août/2016 13:44
par Zorro
voila , avant de ré attaquer mon bois
j'ai refait le code page 1 de ce topic

maintenant une image type
Image

sera bien découpé du premier coup

le probleme ne venait de mon algo , mais du fait qu'en Purebasic on ne peux pas effacer
une couleur avec un pixel transparent !!

d'ailleurs une fonction qui ferai ça, manque !

j'ai du ruser en suprimant a chaque fois l'image transparente sur lequel je dessinais
pour la recreer , c'etait la seule solution pour effacer les résidus d'anciennes image
et finalement simuler l'effacement par ré-ecriture de pixel Transparent

en recreeant une image, on refait en quelques sorte tout les pixels en transparent
donc, il ne reste plus de résidu d'ancienne image (d'ou le probleme soulevé tout a l'heure )


donc , maintenant, c'est tout bon :)

le code n'est pas optimisé , mais pour ceux que ça interresse voici l'algo

on prends l'image a decouper ,
on en fait une copie (on va bosser sur la copie )
on regarde en pixel 1,1 (ou on demande a l'utilisateur) quelle est la couleur de fond
1er temps :
on scan chaque pixels de l'image (mis en tableau )
si le pixel est different on est sur un sprite , alors on le rempli d'une couleur de selection (avec Fill Area ) ici couleur rouge !!
on garde le X et le Y histoire de savoir ou se trouve le coté haut-gauche du sprite
on continu le scan tant qu'on est sur la couleur de selection ... si on est plus, c'est le xmax qu'on garde
pareil en y , apres ça on a les coordonées du sprite dans l'image
2eme temps :
je cree une image transparente
je parcours le tableau de pixel
si la couleur = rouge (couleur de selection )
je lis les pixel de l'image d'origine (celle que j'ai gardé au debut )
et les ecrit dans l'image buffer actuel
bien sur en meme temp je peint les pixel rouge en couleur de fond (plutot blanc)

comme ça au prochaine Scan, le sprite n'existe plus , puisqu'il correspond a de fond ! :)
ensuite je Grab l'image buffer .. je le presente dans l'interface en donnant sa taille, et je sauve le Sprite

on recommence au prochain clique :)

Re: img_cut3

Publié : ven. 12/août/2016 14:57
par Marc56
Merci pour les explications sur l'algo: simple, efficace.

Tu es même en train de faire la base d'un logiciel d'OCR en une poignée de lignes: Isoler les formes, il ne reste plus ensuite qu'à comparer chaque forme à un masque et selon le pourcentage de correspondance, on a la lettre.

:)