[Résolu] Comment créer une Datasection à partir d'une image
[Résolu] Comment créer une Datasection à partir d'une image
Bonjour à tous,
toujours dans programme de monnaie, j'aurais besoin de créer des données à partir d'images, je sais que je peux faire LoadSprite() ou CatchSprite(), mais pour montrer mon programme sue ce forum, par exemple, ce serait plus portable même si ça grossi énormément le programme, mais c'est surtout pour améliorer mes connaissances en programmation.
Je vous remercie beaucoup pour votre aide bienveillante.
toujours dans programme de monnaie, j'aurais besoin de créer des données à partir d'images, je sais que je peux faire LoadSprite() ou CatchSprite(), mais pour montrer mon programme sue ce forum, par exemple, ce serait plus portable même si ça grossi énormément le programme, mais c'est surtout pour améliorer mes connaissances en programmation.
Je vous remercie beaucoup pour votre aide bienveillante.
Dernière modification par Micoute le mar. 11/juil./2017 9:48, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Comment créer une Datasection à partir d'une image
Salut Micoute,
regardes ce topic
Pour limiter le nombre de sprite, utilise la technique du "SpriteSheet", la feuille de sprite : tous tes sprites sont regroupés sur un seul fichier image et tu crées ce que tu as besoin via GrabSprite() et les coordonnées. C'est une technique très très utilisées en Web pour éviter le chargement de n sprites puisqu'au final tu ne charges qu'un seul fichier image.
regardes ce topic
Pour limiter le nombre de sprite, utilise la technique du "SpriteSheet", la feuille de sprite : tous tes sprites sont regroupés sur un seul fichier image et tu crées ce que tu as besoin via GrabSprite() et les coordonnées. C'est une technique très très utilisées en Web pour éviter le chargement de n sprites puisqu'au final tu ne charges qu'un seul fichier image.
Re: Comment créer une Datasection à partir d'une image
Pour la mise au point du programme et pour mettre des exemples légers sur le forum créé simplement des cercles avec la valeur inscrite dessus.
Tu mettras les images ensuite.
Ou tu peux même créer un code qui créé l'image (cercle + texte) s'il ne trouve pas l'image sur le disque.

Tu mettras les images ensuite.
Ou tu peux même créer un code qui créé l'image (cercle + texte) s'il ne trouve pas l'image sur le disque.

Re: Comment créer une Datasection à partir d'une image
@TazNormand Il y a une petite erreur à la ligne 90 : remplacer Read a.l par Read.l a.l, il faut dire que c'est une version qui date
@Marc56 C'est tellement évident, que je n'y ai même pas pensé, ce ne sont que des enfants qui vont au CP, mais c'est vrai qu'avec des "vraies" pièces, c'est plus joli
@Marc56 C'est tellement évident, que je n'y ai même pas pensé, ce ne sont que des enfants qui vont au CP, mais c'est vrai qu'avec des "vraies" pièces, c'est plus joli
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [Résolu] Comment créer une Datasection à partir d'une im
@Micoute
tu utilise EPb je crois !??
dans les outils tu as un outils qui s’appelle "EPB_img2data" qui sert exactement a ça !!
tu lances l'outil , tu choisi le nombre de data par ligne que tu veux (20 par defaut )
tu click sur Run , tu choisi l'image a mettre en data
tu decide de generer des data seul ou bien avec le loader integré au listing
ça te propose de sauvegarder le listing
ça te colle le resultat complet dans EPB !!
voici un exemple obtenu , avec loader integré
tu utilise EPb je crois !??
dans les outils tu as un outils qui s’appelle "EPB_img2data" qui sert exactement a ça !!

tu lances l'outil , tu choisi le nombre de data par ligne que tu veux (20 par defaut )
tu click sur Run , tu choisi l'image a mettre en data
tu decide de generer des data seul ou bien avec le loader integré au listing
ça te propose de sauvegarder le listing
ça te colle le resultat complet dans EPB !!
voici un exemple obtenu , avec loader integré
Code : Tout sélectionner
; Loader_Data :Génré Par img2data_EPB (by Dobro)
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Enumeration
#fenetre
#image
#alerte
EndEnumeration
If InitSprite() = 0
MessageRequester("Erreur","Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !",#PB_MessageRequester_Ok)
End
EndIf
If OpenWindow (#alerte, 0, 0, 320, 50,"alerte",#PB_Window_BorderLess|#PB_Window_ScreenCentered )
If StartDrawing(WindowOutput(#alerte))
DrawText(50, 24, "Patience ! je charge les Datas ",RGB(255,50,0),RGB(0,0,0))
StopDrawing()
EndIf
EndIf
Read Largeur
Read Hauteur
Global Dim tableau(Largeur, Hauteur)
CreateImage(#image, Largeur, Hauteur)
If StartDrawing(ImageOutput(#image))
; ***********mise en tableau ************
For i = 0 To Hauteur -1
For j = 0 To Largeur -1
Read a.l
tableau(j, i)=a.l
Next j
Next i
; **************************
For i = 0 To Hauteur -1
For j = 0 To Largeur -1
Plot(j,i,tableau(j,i))
Next j
Next i
StopDrawing()
EndIf
titre$="D:\Dobro\PureBasic\dobro\ExemplePerso\case\Image2.png"
If OpenWindow (#fenetre, 0, 0, Largeur, Hauteur,titre$,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_SizeGadget)
If OpenWindowedScreen(WindowID(#fenetre), 0, 0, Largeur, Hauteur, 1, 1, 1)
If StartDrawing(ScreenOutput())
DrawImage(ImageID(#image), 0, 0)
StopDrawing()
EndIf
Largeur=800 ; affiche en 800 x600 la vrais resolution est de :32x32
Hauteur=600 ; affiche en 800 x600 la vrais resolution est de :32x32
ResizeWindow(#fenetre,0,0,Largeur,Hauteur)
CloseWindow(#alerte)
Repeat
Until WaitWindowEvent()= #PB_Event_CloseWindow
EndIf
EndIf
End
DataSection
Data.l 32,32
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF
data.l $F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$F2FF,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$F2FF
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED
data.l $F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF,$F2FF,$F2FF,$241CED,$241CED,$241CED
data.l $241CED,$F2FF,$F2FF,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$F2FF,$F2FF
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED,$241CED
data.l $241CED,$241CED,$241CED,$241CED,$241CE
EndDataSection
; Epb
Re: [Résolu] Comment créer une Datasection à partir d'une im
Je savais que j'avais vu ça quelque part, mais je ne me rappelais plus où, alors que je l'avais sous les yeux. On ne devrait pas vieillir ...
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [Résolu] Comment créer une Datasection à partir d'une im
Bonjour Zorro
Merci pour ce partage Epb est cool
Merci pour ce partage Epb est cool
Re: [Résolu] Comment créer une Datasection à partir d'une im
je viens de testé ton code
j'ai un message à cette ligne :
testé avec
Purebasic 5.60 64 bits
j'ai un message à cette ligne :
Accés mémoire invalideGlobal Dim tableau(Largeur, Hauteur)
testé avec
Purebasic 5.60 64 bits
Re: [Résolu] Comment créer une Datasection à partir d'une im
c'est normal ! 
lorsque j'ai codé ça je ne codais qu'en 32bits (d'ailleurs , je ne continue a coder qu'en 32 bits !! )
pour que ça marche en 64 bit il faut Chercher /remplacer Data.l (long) par Data.i (integer )
.L pour les 32 bits et .i pour 64 bits ...
je modifierai l'outils de conversion en ajoutant une case 64 bits ou 32 bits
Merci pour le bug trouvé

lorsque j'ai codé ça je ne codais qu'en 32bits (d'ailleurs , je ne continue a coder qu'en 32 bits !! )
pour que ça marche en 64 bit il faut Chercher /remplacer Data.l (long) par Data.i (integer )
.L pour les 32 bits et .i pour 64 bits ...
je modifierai l'outils de conversion en ajoutant une case 64 bits ou 32 bits
Merci pour le bug trouvé
Re: [Résolu] Comment créer une Datasection à partir d'une im
De rien mon amiZorro a écrit :c'est normal !
lorsque j'ai codé ça je ne codais qu'en 32bits (d'ailleurs , je ne continue a coder qu'en 32 bits !! )
pour que ça marche en 64 bit il faut Chercher /remplacer Data.l (long) par Data.i (integer )
.L pour les 32 bits et .i pour 64 bits ...
je modifierai l'outils de conversion en ajoutant une case 64 bits ou 32 bits
Merci pour le bug trouvé
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Résolu] Comment créer une Datasection à partir d'une im
Bin2Data.pb est un code crée par ts-soft (Forum anglophone) permetant de générer les data section pour des images, des sons et des icones par glisser déposer.
Demo.pb montre la façon d'utiliser la datasection.
https://github.com/pbcodex/Bin2Data/archive/master.zip
Demo.pb montre la façon d'utiliser la datasection.

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [Résolu] Comment créer une Datasection à partir d'une im
Merci falsam pour le bon conseil et pour le lien.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !