Convert IMG-PB "by Néosis"

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Neosis
Messages : 113
Inscription : dim. 24/févr./2008 20:11

Convert IMG-PB "by Néosis"

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

deja fait ici : :)
converti bmp tga jpg to Data (listing du lecteur generé+data)

http://www.purebasic.fr/french/viewtopi ... light=data
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

aussi un convertisseur image -> data est deja present dans Japbe :)
Neosis
Messages : 113
Inscription : dim. 24/févr./2008 20:11

Message 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:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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
Neosis
Messages : 113
Inscription : dim. 24/févr./2008 20:11

Message 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 :?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Ah ouais grave!

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