Voici un ch'ti programme basic (Jeu de mot ) pour savoir le nombre de couleurs que contient une image:
Code : Tout sélectionner
Enumeration 1
#Fenetre
#ImageChargement
#TextGadgetProgressBar
#TextGadgetInfo
#TextGadgetInfoPourcentage
#TextGadgetInfoPixelLue
#TextGadgetInfoCouleur
EndEnumeration
; Procedure de chargement d'une image
Procedure.l ChargementImage(NumeroImage, FiltreDefaut)
Filtre$ = "Image Bmp (*.Bmp)|*.Bmp|Image Png (*.Png)|*.Png|Image Jpeg (*.Jpg)|*.Jpg;*.Jpeg|Image Tga (*.Tga)|*.Tga|Image Tiff (*.Tiff)|*.Tiff"
FichierImage$ = OpenFileRequester("Choisissez un fichier à charger", GetHomeDirectory() + "Bureau\", Filtre$, FiltreDefaut)
If FichierImage$ > ""
Select LCase(GetExtensionPart(FichierImage$))
Case "bmp"
; Ok
Case "png"
UsePNGImageDecoder()
Case "jpeg","jpg"
UseJPEGImageDecoder()
Case "tga"
UseTGAImageDecoder()
Case "tiff"
UseTIFFImageDecoder()
Default
MessageRequester("Fichier invalide !", " Se fichier n'est pas une image valide ou n'est pas pris en charge !", 48)
ProcedureReturn 0
EndSelect
Else
MessageRequester("Information", " L'oppération à été annulé.", 64)
ProcedureReturn 0
EndIf
If LoadImage(NumeroImage, FichierImage$) <> 0
ProcedureReturn LoadImage(NumeroImage, FichierImage$)
Else
MessageRequester("Erreur de chargement !", " Impossible de charger le fichier " + Chr(34) + GetFilePart(FichierImage$) + Chr(34) + " !", 16)
ProcedureReturn 0
EndIf
ProcedureReturn 0
EndProcedure
; Procedure pour lire l'image
Procedure LireImage()
If ChargementImage(#ImageChargement, 1)
OpenWindow(#Fenetre, 0, 0, 300, 105, "Ressencement des couleurs de l'image...", #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_Tool | #PB_Window_ScreenCentered)
TextGadget(#TextGadgetInfo, 10, 10, 280, 15, "Veuillez patienter, Ressencement des couleurs en court...", #PB_Text_Center)
TextGadget(#TextGadgetInfoPixelLue, 10, 25, 280, 15, "Pixel actuelement lue: 0", #PB_Text_Center)
TextGadget(#TextGadgetInfoCouleur, 10, 40, 280, 15, "Le nombre actuel de couleurs de l'image est de: ", #PB_Text_Center)
TextGadget(#TextGadgetProgressBar, 10, 60, 280, 15, "")
TextGadget(#TextGadgetInfoPourcentage, 10, 80, 280, 15, "Pourcentage accomplie: 0%", #PB_Text_Center)
SetGadgetColor(#TextGadgetProgressBar, #PB_Gadget_FrontColor, RGB(0, 0, 255))
X = 0
Y = 0
LargeurImage = ImageWidth(#ImageChargement)
HauteurImage = ImageHeight(#ImageChargement)
Profondeur = ImageDepth(#ImageChargement)
NewMap MaMapDeCouleur.i(LargeurImage * HauteurImage)
StartDrawing(ImageOutput(#ImageChargement))
Repeat
If (X = LargeurImage And Y < HauteurImage)
X = 0
Y + 1
Pourcentage.d = (141 / HauteurImage) * Y
PourcentageTexte.d = (100 / HauteurImage) * Y
If SauvegardePourcentage <> Int(Pourcentage.d)
SauvegardePourcentage = Int(Pourcentage.d)
ProgressBars$ + "|"
SetGadgetText(#TextGadgetProgressBar, ProgressBars$)
SetGadgetText(#TextGadgetInfoPixelLue, "Pixel actuelement lue: " + Str(X + (Y * LargeurImage)) + " / " + Str(LargeurImage * HauteurImage))
SetGadgetText(#TextGadgetInfoCouleur, "Le nombre de couleurs actuel de l'image est de: " + Str(MapSize(MaMapDeCouleur.i())) + ".")
SetGadgetText(#TextGadgetInfoPourcentage, "Pourcentage accomplie: " + StrD(PourcentageTexte.d, 2) + "%")
EndIf
EndIf
Couleur = Point(X, Y)
AddMapElement(MaMapDeCouleur.i(), Str(Couleur))
MaMapDeCouleur.i() = Couleur
If ((X + 1) = LargeurImage And (Y + 1) = HauteurImage)
Break
EndIf
X + 1
Event = WaitWindowEvent(0)
If Event = #PB_Event_CloseWindow
End
EndIf
ForEver
StopDrawing()
ProgressBars$ = ""
For I = 1 To 140
ProgressBars$ + "|"
Next
SetGadgetText(#TextGadgetProgressBar, ProgressBars$)
SetGadgetText(#TextGadgetInfo, "Ressencement des couleurs de l'image terminé.")
SetGadgetText(#TextGadgetInfoPixelLue, "Pixel actuelement lue: " + Str(LargeurImage * HauteurImage) + " / " + Str(LargeurImage * HauteurImage))
SetGadgetText(#TextGadgetInfoCouleur, "Le nombre de couleurs totale de l'image est de: " + Str(MapSize(MaMapDeCouleur.i())) + ".")
SetGadgetText(#TextGadgetInfoPourcentage, "Pourcentage accomplie: 100.00%")
Repeat
Event = WaitWindowEvent(1)
Until Event = #PB_Event_CloseWindow
End
EndIf
EndProcedure
LireImage()