Soft Découpe d'image

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Soft Découpe d'image

Message par Shadow »

Rebonjour à tous, ça fessais un moment, je ne fais que passé ne tirez pas !!!

Je sais plus si ça déjà été dis...
Existe t-il un soft qui permet la découpe d'image en d'autres images...

Par exemple une image composer d'objets, le soft va découper chaque objet et les mettre dans
chaque image séparer en les nommant...

Dobro avait fais un soft comme ça mais ça ne fonctionne pas pour mes images à moi.
Je voudrait découper toutes ces images:
https://www.aht.li/3102524/Pieces_Donjon.png

Il semble ne pas exister de programme pour faire ça, sur le net...
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Soft Découpe d'image

Message par Ar-S »

Il existe surement des tas de soft pour faire ça.
Recherche dans le forum du coté de grabimage()
img_cut3 de zorro par ici : http://www.purebasic.fr/french/viewtopi ... ge#p191294
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Soft Découpe d'image

Message par Shadow »

J'ai dis que le logiciel de dobro img_cut3 ne fonctionne pas sur cette image.
Merci quand même.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Soft Découpe d'image

Message par case »

bah tu sais quoi faire alors.
ImageImage
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Soft Découpe d'image

Message par Shadow »

J'ai passer des heures à cherche un logiciel mais on dirait que ça n’existe pas 8O
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Soft Découpe d'image

Message par SPH »

Code le en purebasic :!:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Soft Découpe d'image

Message par Ar-S »

Franchement tu vas encore galérer à tenter de faire un truc du genre. Ce n'est pas facile...
Je te propose une autre orientation.
Normalement une planche de sprite ou de dessins de donjon dans ton cas est utilisable
- Soit en indiquant les valeur x et y de chaque image. Et ça c'est long
- Soit on fait en sorte que les sprites soient dans des cases de même largeur / hauteur

Cette seconde solution est bien plus simple si tu désires ensuite découper tes images...

En prenant ces 4 images que j'ai mis dans des bloc de 256x256
Image

Voilà un code te permettant de les découper et de les sauver de façon auto.

Code : Tout sélectionner

; Imagetest : "http://share.ldvmultimedia.com/pieces_donjon2.png"

UsePNGImageDecoder()
UsePNGImageEncoder()

Image = LoadImage(#PB_Any,"D:\OneDrive\Documents\PB\pieces_donjon2.png")


Macro GrabSave(IDim, PosX, PosY, La, Ha)
  ;Ar-S
  StartDrawing(ImageOutput(Image))
  NewImage = GrabDrawingImage(#PB_Any,PosX,PosY,La ,Ha)
  Resultat = SaveImage(NewImage, GetCurrentDirectory()+"image"+Str(IDim)+".png" , #PB_ImagePlugin_PNG)
  StopDrawing()
EndMacro

nombredimage_surmaligne = 4
L = 256 ;largeurduneimage ; a toi de voir la largeur d'une des images à capturer
H = 256 ;hauteurduneimage ; a toi de voir la hauteur d'une des images à capturer

NBR = 1
For i = 0 To nombredimage_surmaligne-1
  Debug x
  GrabSave(i, x, 0, L, H)
  x+256
Next
Ce sera ma seule contribution à ce topic, je n'ai absolument pas le temps d'en faire plus.
Bonne chance.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Soft Découpe d'image

Message par Shadow »

Merci Ar's et tu as raison, c'est ce que j'ai fait, les cases !
Sinon je vais tenter de faire un soft de découpe ou ya pas besoin de case mais seulement au moins 1 pixel de vide autour de l'image.

Je ne vais pas faire un soft comme dobro qui est je pense plus pointu.
Moi je vais juste chercher ou se situe cette marge et découper, on va bien voir...
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Soft Découpe d'image

Message par Zorro »

Shadow essaye de faire une decoupe de son image en utilisant mon code de decoupe ...

mais il oubli de préciser que son image est .... transparente !!
voici en réalité son image
Image

ce qu'il s'est bien garder de préciser .....
mon code etant basé sur le systeme de remplissage de Purebasic , et du systeme de lecture de la couleur d'un pixel ....

j'ai bien dit de la couleur des pixels, pas de la transparence ....
donc forcement, mon code ne peut pas marcher sur ce type d'image !!!

deuxieme difficulté ... mon code decoupe une portion d'image en utilisant une couleur de remplissage spécifique
c'est cette couleur qui fait office de Masque !
hors dans son image, le seul remplissage possible ce sont les traits....
mais comme ceux ci ne font qu'un pixel d’Épaisseur, la fonction "Fill()" de Purebasic s'arrete au moindre decalage de ligne de pixel
bref ... mon prg , ne peux en l'etat pas decouper ce genre d'image !

sauf peut etre si on epaissi le trait de ses pieces ... (je vais faire un essai pour voir )
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Soft Découpe d'image

Message par Zorro »

comme je le présumais, c'est bien la faible largeur de ses traits qui empeche
mon algo de fonctionner


en mettant une epaisseur aux traits (j'ai en fait rempli l'epaiseur vide de ses pieces )
voici la preuve que ça fonctionne :)

https://www.youtube.com/watch?v=aqNrzW0 ... e=youtu.be
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Soft Découpe d'image

Message par case »

je sais que c'est comme donner du lard a un cochon...

Code : Tout sélectionner

InitSprite()
UsePNGImageDecoder()
UsePNGImageEncoder()
i=LoadImage(#PB_Any,"Pieces_Donjon.png") ; image de travail
t=LoadImage(#PB_Any,"Pieces_Donjon.png") ; image de decoupage

Structure cut
  x.i
  y.i
  l.i
  h.i  
  pic.i
EndStructure
NewList pt.coord()
NewList ct.cut()
StartDrawing(ImageOutput(i))
x=0
y=0
c=Point(x,y) ; bg color
Repeat  
  fnd=0
  For y=0 To ImageHeight(i)-1
    If Point(x,y)<>c 
      Plot(x,y,$ffffff)
      fnd=1:Break
    EndIf      
  Next
  If fnd=1   ; object found
    AddElement(pt())
    pt()\x=x
    pt()\y=y
    minx=x
    miny=y
    maxx=x
    maxy=y
    start:
    ForEach pt()
      If pt()\x< minx
        minx=pt()\x
      EndIf
      If pt()\x> maxx
        maxx=pt()\x
      EndIf
      
      If pt()\y< miny
        miny=pt()\y
      EndIf
      If pt()\y> maxy
        maxy=pt()\y
      EndIf                        
      Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
      xx=pt()\x
      yy=pt()\y
      DeleteElement(pt())
      range=2
      For rng=1 To range
        If Point(xx-rng,yy)<>c
          AddElement(pt())
          pt()\x=xx-rng
          pt()\y=yy
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image        
        EndIf
        If Point(xx+rng,yy)<>c
          AddElement(pt())
          pt()\x=xx+rng
          pt()\y=yy
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
          
        EndIf
        If Point(xx,yy-rng)<>c
          AddElement(pt())
          pt()\x=xx
          pt()\y=yy-rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf
        If Point(xx,yy+1)<>c
          AddElement(pt())
          pt()\x=xx
          pt()\y=yy+rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf      
        If Point(xx-1,yy-rng)<>c
          AddElement(pt())
          pt()\x=xx-rng
          pt()\y=yy-rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf
        If Point(xx+1,yy+1)<>c
          AddElement(pt())
          pt()\x=xx+rng
          pt()\y=yy+rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf
        If Point(xx+rng,yy-rng)<>c
          AddElement(pt())
          pt()\x=xx+rng
          pt()\y=yy-rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf
        If Point(xx-rng,yy+rng)<>c
          AddElement(pt())
          pt()\x=xx-rng
          pt()\y=yy+rng
          Plot(pt()\x,pt()\y,c) ; efface le point dans l'image      
        EndIf    
      Next
    Next
    If ListSize(pt())
      Goto start
    Else
      ;   Goto exit
      Debug Str(minx)+","+Str(miny)+","+Str(maxx)+","+Str(maxy)      
      AddElement(ct())
      ct()\x=minx
      ct()\y=miny
      ct()\l=maxx-minx+1
      ct()\h=maxy-miny+1
    EndIf    
  EndIf
  x+1  
Until x=ImageWidth(i) And y= ImageHeight(i)
StopDrawing()
SaveImage(i,"output.png",#PB_ImagePlugin_PNG)
ForEach ct()
  ct()\pic=GrabImage(t,#PB_Any,ct()\x,ct()\y,ct()\l,ct()\h)
  SaveImage(ct()\pic,"cutout_"+Str(ListIndex(ct()))+".png",#PB_ImagePlugin_PNG)
Next





Dernière modification par case le mer. 09/août/2017 19:00, modifié 1 fois.
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Soft Découpe d'image

Message par Ar-S »

Gruic, très propre :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Soft Découpe d'image

Message par SPH »

je sais que c'est comme donner du lard a un cochon...
Ou : "donner un code a une tete de lard" :lol: :lol: 8)

OK, JE SORS :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Soft Découpe d'image

Message par Ollivier »

case a écrit :je sais que c'est comme donner du lard a un cochon...
Je peux pas exécuter ton lard, faute de câble : c'est un fill fait maison qui remplit des figures fines (type trait, cercle, courbes, etc...) ?
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Soft Découpe d'image

Message par case »

Ollivier a écrit :
case a écrit :je sais que c'est comme donner du lard a un cochon...
Je peux pas exécuter ton lard, faute de câble : c'est un fill fait maison qui remplit des figures fines (type trait, cercle, courbes, etc...) ?
oui en quelque sorte un espèce de flood-fill mais grossier avec lequel en recuperant les valeurs minimum et maximum remplies j'obtiens les coordonnes de découpe

maintenant j’attends de voir ce qu'en fera shadok si il projette de faire quelque chose avec ça et qu'il coince pour une simple découpe
alors qu'il pourrait aussi simplement entrer les coordonnes a la main j'ai peur pour la suite :)
ImageImage
Répondre