j'ai indiqué ce que j'avais fait, c'etait pas pour que tu le fasse, puisque c'est deja fait !!
Code : Tout sélectionner
; code by Dobro
; pure basic 4.00
; suporte les Formats BMP,Jpeg,Png,TGA,TIFF
; a utiliser sur de petite image max 1024x768
; car au dela cela Rame Grave :D (la fonction point() est en cause)
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
Enumeration
#fenetre
#image
#alerte
EndEnumeration
InitSprite()
NewList buffer.s()
If OpenWindow(#fenetre, 0, 0, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )
If OpenWindowedScreen(WindowID(#fenetre),0,0,800,600,1,1,1)
NomFichier$ = OpenFileRequester("dobro_datagenerator", "c:", "Fichiers image|*.bmp;*.jpg;*.jpeg;*.png;*.tga;*.tiff", 0 )
If LoadImage(#image, NomFichier$)
Hauteur = ImageHeight(#image)
Largeur = ImageWidth(#image)
Global Dim tableau(Largeur, Hauteur )
ResizeWindow(#fenetre, 0,0,Largeur,Hauteur)
If StartDrawing(ScreenOutput() )
DrawImage(ImageID(#image), 0, 0 )
StopDrawing()
EndIf
ResizeWindow(#fenetre, 0,0,800,600)
FlipBuffers()
num=CreateFile(#PB_Any,"data.pb") :; ceci ecrit le fichier pb (txt) pour etre charge dans l'editeur !!
WriteStringN(num,"; codé Par Dobro img to data")
WriteStringN(num,"Enumeration")
WriteStringN(num,"#fenetre")
WriteStringN(num,"#image")
WriteStringN(num,"#alerte")
WriteStringN(num,"EndEnumeration")
WriteStringN(num,"If InitSprite() = 0")
WriteStringN(num,"MessageRequester("+Chr($22)+"Erreur"+Chr($22)+","+Chr($22)+ "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !"+Chr($22)+","+"#PB_MessageRequester_Ok)")
; MessageRequester("","",#PB_MessageRequester_Ok )
WriteStringN(num,"End")
WriteStringN(num,"EndIf")
WriteStringN(num,"If OpenWindow (#alerte, 0, 0, 320, 50,"+Chr($22)+"alerte"+Chr($22)+",#PB_Window_BorderLess|#PB_Window_ScreenCentered ) ")
WriteStringN(num,"If StartDrawing(WindowOutput(#alerte)) ")
WriteStringN(num," DrawText(50, 24, "+Chr($22)+"Patience ! je charge les Datas "+Chr($22)+",RGB(255,50,0),RGB(0,0,0)) ")
WriteStringN(num," StopDrawing() ")
WriteStringN(num," EndIf ")
WriteStringN(num,"EndIf")
WriteStringN(num,"Read Largeur")
WriteStringN(num,"Read Hauteur")
WriteStringN(num,"Global Dim tableau(Largeur, Hauteur)")
WriteStringN(num,"CreateImage(#image, Largeur, Hauteur)")
WriteStringN(num,"If StartDrawing(ImageOutput(#image))")
WriteStringN(num," ; ***********mise en tableau ************")
WriteStringN(num,"For i = 0 To Largeur -1")
WriteStringN(num," For j = 0 To Hauteur -1 ")
WriteStringN(num," Read a.l ")
WriteStringN(num," tableau(i, j)=a.l ")
WriteStringN(num,"Next j")
WriteStringN(num,"Next i")
WriteStringN(num," ; **************************")
WriteStringN(num,"For i = 0 To Largeur -1")
WriteStringN(num," For j = 0 To Hauteur -1 ")
WriteStringN(num," Plot(i,j,tableau(i,j)) ")
WriteStringN(num," Next j")
WriteStringN(num,"Next i")
WriteStringN(num," StopDrawing() ")
WriteStringN(num,"EndIf")
WriteStringN(num," titre$="+Chr($22)+NomFichier$+Chr($22))
; dessous: genere le code qui permet de relire les datas !!
; ouaaa du code qui s'autoecrit !!! :-D
WriteStringN(num,"If OpenWindow (#fenetre, 0, 0, Largeur, Hauteur,titre$,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_SizeGadget)")
WriteStringN(num,"If OpenWindowedScreen(WindowID(#fenetre), 0, 0, Largeur, Hauteur, 1, 1, 1) ")
WriteStringN(num,"If StartDrawing(ScreenOutput())")
WriteStringN(num," DrawImage(ImageID(#image), 0, 0) ")
WriteStringN(num,"StopDrawing() ")
WriteStringN(num,"EndIf")
WriteStringN(num,"Largeur=Largeur/4 ; affiche 4 fois plus petit")
WriteStringN(num,"Hauteur=Hauteur/4 ; affiche 4 fois plus petit")
WriteStringN(num,"ResizeWindow(#fenetre,0,0,Largeur,Hauteur)")
WriteStringN(num,"CloseWindow(#alerte)")
WriteStringN(num," Repeat")
WriteStringN(num,"Until WaitWindowEvent()= #PB_Event_CloseWindow")
WriteStringN(num,"EndIf")
WriteStringN(num,"EndIf ")
WriteStringN(num,"End ")
;************************
If OpenWindow (#alerte, 0, 0, 500, 50,"alerte",#PB_Window_BorderLess|#PB_Window_ScreenCentered )
If StartDrawing(WindowOutput(#alerte))
DrawText(50, 24, "Patience ! je sauve les Datas dans 'Data.Pb' ",RGB(255,50,0),RGB(0,0,0))
StopDrawing()
EndIf
EndIf
WriteStringN(num,"DataSection") :; commence la section des data
WriteStringN(num,"Data.l "+Str( Largeur)+","+Str( Hauteur))
StartDrawing(ImageOutput(#image) )
; *********** mise en tableau de l'image ************
For Y=0 To Hauteur-1
For X=0 To Largeur-1
tableau(X,Y)=Point(X, Y)
Next X
Next Y
; *********************************************
For i =0 To Largeur -1
ligne.s="data.l " ; insere la fonction data.l avant les valeurs
For j = 0 To Hauteur-1
ligne.s=ligne.s+Str(tableau(i,j))+",":; met des virgules entre les datas
Next j
ligne.s=Left(ligne.s, Len(ligne.s)-1) :; retire la derniere virgule de la ligne
AddElement( buffer.s())
buffer.s()= ligne.s
Next i
ForEach buffer.s()
WriteStringN(num, buffer.s()):; ecrit une ligne entiere de data
Next
StopDrawing()
WriteStringN(num," "):; saute une ligne vide
WriteStringN(num,"EndDataSection") :;ecrit la fin de section data
CloseFile(num)
EndIf
CloseWindow(#alerte)
CloseWindow(#fenetre)
EndIf
EndIf
End