Page 1 sur 1

Convert IMG-PB "by Néosis"

Publié : dim. 01/juin/2008 16:41
par Neosis
Salut tous le monde :)

ça vous arrive de créer des icônes pour vos programmes?, pour vos toolbar?ou autre? ... actuellement je me fait pas mal de programme et je n'aime pas charger mes icônes avec "loadimage" si l'utilisateur d'un programme change le nom de l'icône ou si l'icône est déplacé dans un autre répertoire voir même supprimer, impossible de charger l'icône.(et puis ça fait des fichiers en plus :) )


Je c'est pas si ce petit programme vous sera utile, en tous cas moi il me sert bien. Ce programme convertir une image et le transforme en un jolie code source sur PureBasic du coup il devient possible de mettre vos image DANS le programme.
L'inconvénient de mon programme c'est qu'il est un peu lent sur les grosses image, en faites mon programme et plutôt fait pour les petit image qui sert a faire vos icones...

Enfin bref je vous laisse découvrir mon prog je vous donne le code source ci-dessous, Dite moi ce que vous en pensez :P


PS: Seulement 150 lignes et encore je pense que je peux l'amélioré.

Voici une image que j'ai utiliser pour mes test sur le programme, ça passe tranquillou même si ça mais un peu de temps à être convertie. :)
http://www.360fury.com/Fury01/wp-conten ... /halo3.jpg
;================================
; Convert IMG-PB ( Version 1.0 )
; Fait par Néosis
;================================
; Permet de convertir les images en codes sources PureBasic

Enumeration
#bar
#BP_convertir
#BP_image
#IMAGE_encour
#File
#script
#text_info
#text_info2
#text_info3
#text_image
#text_progres
#WINDOW_PRINCIPALE
EndEnumeration
;============================= Procédure ============================

Procedure Charger_Image()
Shared CHARGEMENT,Fichier$

CHARGEMENT = #True
FichierParDefaut$ = "*.png"
Filtre$ = "(*.bmp)|*.bmp;*.bat|(*.png)|*.png;*.bat|(*.jpg)|*.jpg;*.bat| Tous les fichiers (*.*)|*.*"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Fichier$ = OpenFileRequester("Choisissez un fichier à charger",FichierParDefaut$,Filtre$,Filtre)

EndProcedure

Procedure Script()

Width_Img= ImageWidth(#IMAGE_encour)
Height_Img= ImageHeight(#IMAGE_encour)
Nb_Pixel = Width_Img*Height_Img

; Réalisation des datas pour les données de l'image
AddGadgetItem(#script,Ligne,"DataSection"):Ligne+1
StartDrawing(ImageOutput(#IMAGE_encour))
Progression.d
For y=0 To Height_Img-1
Progression=((y*Width_Img)/Nb_Pixel)*100
SetGadgetText(#text_progres,Str(Progression)+"%")
SetGadgetState(#bar,Progression)
While x<Width_Img
CouleurDATA1 = Point(x,y) : CouleurDATA2 = Point(x+1,y)
CouleurDATA3 = Point(x+2,y) : CouleurDATA4 = Point(x+3,y)
CouleurDATA5 = Point(x+4,y) : CouleurDATA6 = Point(x+5,y)
CouleurDATA7 = Point(x+6,y) : CouleurDATA8 = Point(x+7,y)
AddGadgetItem(#script,Ligne,"Data.l "+Str(CouleurDATA1)+","+Str(CouleurDATA2)+","+Str(CouleurDATA3)+","+Str(CouleurDATA4)+","+Str(CouleurDATA5)+","+Str(CouleurDATA6)+","+Str(CouleurDATA7)+","+Str(CouleurDATA8)):Ligne+1
x+8
If Width_Img-x<8
aug=Width_Img-x
Ligne$= ""
For i=0 To aug-1
Ligne$=Ligne$+Str(Point(x+i,y))+","
Next
Ligne$="Data.l "+Ligne$
Ligne$=Left(Ligne$,Len(Ligne$)-1)
AddGadgetItem(#script,Ligne,Ligne$):Ligne+1
Break
EndIf
Wend
Delay(2)
x=0
Next
StopDrawing()
AddGadgetItem(#script,Ligne,"EndDataSection"):Ligne+1

; Générer le script permetant de lire les datas et de recréer l'image
AddGadgetItem(#script,Ligne,""):Ligne+1
AddGadgetItem(#script,Ligne,"CreateImage(#Img,"+Str(Width_Img)+","+Str(Height_Img)+")"):Ligne+1
AddGadgetItem(#script,Ligne,"StartDrawing(ImageOutput(#Img))"):Ligne+1
AddGadgetItem(#script,Ligne,"For y=0 To "+Str(Height_Img-1)):Ligne+1
AddGadgetItem(#script,Ligne,"For x=0 To "+Str(Width_Img-1)):Ligne+1
AddGadgetItem(#script,Ligne,"Read Couleur"):Ligne+1
AddGadgetItem(#script,Ligne,"Plot(x,y,Couleur)"):Ligne+1
AddGadgetItem(#script,Ligne,"Next"):Ligne+1
AddGadgetItem(#script,Ligne,"Next"):Ligne+1
AddGadgetItem(#script,Ligne,"StopDrawing()"):Ligne+1
Progression=100
SetGadgetText(#text_progres,Str(Progression)+"%")
SetGadgetState(#bar,Progression)
CloseWindow(#File)

EndProcedure

Procedure Info()

OpenWindow(#File,400,300,400,125," Information ",#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#File))
TextGadget(#text_info,5,10,390,30," Vueillez patientez pendant la conversion de l'image en données data..., n'éfféctuez aucune opération pendant la conversion.",#PB_Text_Center)
TextGadget(#text_info2,5,45,390,45," Lorsque la conversion sera terminer faites un clic sur l'espace code puis faites ' Ctrl+C ' pour copier le code ensuite coller celui-ci dans votre fichier PureBasic avec ' Ctrl+V '.",#PB_Text_Center)
TextGadget(#text_info3,5,105,390,15," Ne faites rien tant que la conversion n'est pas terminer ...",#PB_Text_Center)

EndProcedure
;====================== Ouverture du Programme ======================

ExamineDesktops()
hauteur_win=DesktopHeight(0)-100
OpenWindow(#WINDOW_PRINCIPALE,50,10,435,hauteur_win," Convertir image ",#PB_Window_MinimizeGadget|#PB_Window_SystemMenu)
UsePNGImageDecoder() : UseJPEGImageDecoder()
CreateGadgetList(WindowID(#WINDOW_PRINCIPALE))
ButtonGadget(#BP_image,10,5,120,20," Choisir une image ")
ButtonGadget(#BP_convertir,10,28,120,20," Convertir l'Image ")
TextGadget(#text_image,140,7,260,40," Choisisser votre image ")
EditorGadget(#script,10,50,380,hauteur_win-60)
ProgressBarGadget(#bar,400,50,25,hauteur_win-60,0,100,#PB_ProgressBar_Vertical)
TextGadget(#text_progres,403,30,30,15,"0 %")
DisableGadget(#BP_convertir,1)

;====================== Gestions des événements ======================

Repeat

Evenement = WaitWindowEvent()
Select Evenement

Case #PB_Event_Gadget

id_gadget = EventGadget()
Select id_gadget
Case #BP_image
Charger_Image()

Case #BP_convertir
Info()
Script() ; On réalise le code source de l'image

EndSelect
EndSelect

If Fichier$ And CHARGEMENT = #True
SetGadgetText(#text_image,Fichier$)
LoadImage(#IMAGE_encour,Fichier$)
DisableGadget(#BP_convertir,0)
CHARGEMENT = #False
EndIf

Until Evenement = #PB_Event_CloseWindow

End

Publié : dim. 01/juin/2008 17:29
par Backup
deja fait ici : :)
converti bmp tga jpg to Data (listing du lecteur generé+data)

http://www.purebasic.fr/french/viewtopi ... light=data

Publié : dim. 01/juin/2008 17:29
par nico
ça vous arrive de créer des icônes pour vos programmes?, pour vos toolbar?ou autre? ... actuellement je me fait pas mal de programme et je n'aime pas charger mes icônes avec "loadimage" si l'utilisateur d'un programme change le nom de l'icône ou si l'icône est déplacé dans un autre répertoire voir même supprimer, impossible de charger l'icône.(et puis ça fait des fichiers en plus Smile )

Oui mais dans ce cas là, il y a IncludeBinary, en 1 ligne tu charges l'image ou l'icône dans l'exe. :idea:

Publié : dim. 01/juin/2008 17:31
par Backup
aussi un convertisseur image -> data est deja present dans Japbe :)

Publié : dim. 01/juin/2008 19:22
par Neosis
Dobro a écrit :aussi un convertisseur image -> data est deja present dans Japbe :)

oh mince, tous ça pour rien :(
bon pas grave ça ma permis de revoir un ou deux détail tous de même :)

punaise un peu dégouter quand même je ne savais pas qu'il y avait ça dans japbe, faut dire que je me contente de pas grand choses avec japbe :roll:

Publié : dim. 01/juin/2008 19:50
par Ollivier
Bah, ne t'inquiète pas : moi aussi je suis du genre à faire parfois des choses qui ont déjà existé et sans en être conscient ! ! !

ça n'empêche rien à l'avenir!

Publié : dim. 01/juin/2008 20:57
par Backup
Neosis a écrit : oh mince, tous ça pour rien :(
bon pas grave ça ma permis de revoir un ou deux détail tous de même :)

punaise un peu dégouter quand même je ne savais pas qu'il y avait ça dans japbe, faut dire que je me contente de pas grand choses avec japbe :roll:
[/b]
pas pour rien tu tes éclaté a le faire, c est deja bien :)

pour JAPBE cest dans le menu outils-->include binary [ALT+x] :)
ne me demande pas comment a marche, je ne m en sert pas :)

Publié : dim. 01/juin/2008 21:24
par Ar-S
Clair que c'est pas de bol, mais comme l'a dit Ollivier, on s'aperçoit parfois que ce que l'on est fier d'avoir pondu en suant des goûtes de sang a déjà été fait 15 fois... Il n'en demeure pas moins que c'est ta progéniture, tu peux donc en être fier. De plus la programmation c'est coder et coder encore :D

J'attends tes prochains codes avec impatience. :P

Publié : lun. 02/juin/2008 5:01
par Neosis
Merci tous le monde :P
Je viens d'essayée includebinari sur japbe mais je n'arrive pas a lire correctement les datas pour reproduire l'image bizarres...

En tous cas je désespère pas, j'ai encore quelques défi et projet à coder :)
Néanmoins je croie que je vais devoir me calmer un petit peu sur la programmation car la j'ai mon Bac à passer :?

Publié : lun. 02/juin/2008 10:24
par Ollivier
Ah ouais grave!

Mets-toi au bac! IncludeBinary ça peut attendre un petit peu !