Comment réduire le nombre de couleurs d'une image
Publié : dim. 18/juin/2017 18:16
Salut,
Voici un court tuto pour réduire la taille de vos image tout en ayant une qualité excellente.
Cependant, nous allons réduire le nombres d'informations de l'image, plus exactement le nombre de couleurs.
Passez votre image avec ce code, celui-ci va mettre toute les valeur RGBA en Pair.
Il supprime également toute les valeurs 0 pour un future usage (Non implémenté).
Ainsi, on réduit déjà le nombre de couleurs de l'image par 2 !
Attention, image supporté seulement BMP et PNG pour ce code. (Il va y avoir des râleurs je le sens ^^)
Ensuite ouvrez votre image avec GIMP et enregistrez la en PNG (GIMP a un algorithme bien meilleur que Paint)
Peut être que d'autres en on aussi, mais je prends GIMP car c'est lui que j'ai et qu'il est Gratuit.
Pour finir, télécharger: https://pnggauntlet.com/
Et passez votre image avec.
La taille de votre image à beaucoup réduit et ça en conservant quasiment ça qualité, pertes non visible.
Voilà !
Voici un court tuto pour réduire la taille de vos image tout en ayant une qualité excellente.
Cependant, nous allons réduire le nombres d'informations de l'image, plus exactement le nombre de couleurs.
Passez votre image avec ce code, celui-ci va mettre toute les valeur RGBA en Pair.
Il supprime également toute les valeurs 0 pour un future usage (Non implémenté).
Ainsi, on réduit déjà le nombre de couleurs de l'image par 2 !
Attention, image supporté seulement BMP et PNG pour ce code. (Il va y avoir des râleurs je le sens ^^)
Code : Tout sélectionner
; Créé le 18/06/2017 par Dieppedalle David.
Enumeration 1
#Image
EndEnumeration
Global FichierImage$ = ""
; Procédure de chargement d'une image
Procedure.l ChargementImage(NumeroImage, FiltreDefaut)
Chargement_Image:
Filtre$ = "Image Bmp (*.Bmp)|*.Bmp|Image Png (*.Png)|*.Png|Image Jpg (*.Jpg)|*.Jpg"
FichierImage$ = OpenFileRequester("Choisissez un fichier à charger", GetHomeDirectory() + "Bureau\", Filtre$, FiltreDefaut)
If FichierImage$
If FindString(LCase(GetFilePart(FichierImage$)), ".bmp", 1)
; Ok
ElseIf FindString(LCase(GetFilePart(FichierImage$)), ".png", 1)
UsePNGImageDecoder()
ElseIf FindString(LCase(GetFilePart(FichierImage$)), ".jpg", 1)
MessageRequester("Fichier invalide !", " Le format Jpg n'est pas supporté dans ce code !", 48)
ProcedureReturn 0
Else
MessageRequester("Fichier invalide !", " Veuillez choisir un fichier d'image invalide !", 48)
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
EndIf
ProcedureReturn 0
EndProcedure
; Procédure pour lire l'image
Procedure LireImage()
If ChargementImage(#Image, 1)
LargeurImage.i = ImageWidth(#Image)
HauteurImage.i = ImageHeight(#Image)
ProfondeurImage.i = ImageDepth(#Image)
StartDrawing(ImageOutput(#Image))
For Y.i = 0 To HauteurImage.i - 1
For X.i = 0 To LargeurImage.i - 1
; Extraction de la couleur du Pixel.
Couleur.q = Point(X.i, Y.i)
; Met toute les valeurs du Pixel à Pair.
Rouge.i = (Red(Couleur.q) / 2) * 2
Vert.i = (Green(Couleur.q) / 2) * 2
Bleu.i = (Blue(Couleur.q) / 2) * 2
; Pas de valeur 0 car sera réservé.
If Rouge.i = 0
Rouge.i = 2
EndIf
If Rouge.i > 255
Rouge.i = 254
EndIf
; Pas de valeur 0 car sera réservé.
If Vert.i = 0
Vert.i = 2
EndIf
If Vert.i > 255
Vert.i = 254
EndIf
; Pas de valeur 0 car sera réservé.
If Bleu.i = 0
Bleu.i = 2
EndIf
If Bleu.i > 255
Bleu.i = 254
EndIf
If ProfondeurImage.i = 32
Alpha.i = (Alpha(Couleur.q) / 2) * 2
; Pas de valeur 0 car sera réservé.
If Bleu.i = 0
Bleu.i = 2
EndIf
If Alpha.i > 255
Alpha.i = 254
EndIf
EndIf
; Remplace le nouveau Pixel.
Plot(X.i, Y.i, Rouge.i + Vert.i * 256 + Bleu.i * 65536 + Alpha.i * 16777216)
Next
Next
NomFichier$ = GetFilePart(FichierImage$, #PB_FileSystem_NoExtension)
ExtentionFichier$ = GetExtensionPart(FichierImage$)
CheminFichier$ = GetPathPart(FichierImage$)
If ImageFormat(#Image) = #PB_ImagePlugin_BMP
; Remplace l'image pour la nouvelle.
If SaveImage(#Image, CheminFichier$ + NomFichier$ + " Réduit." + ExtentionFichier$, #PB_ImagePlugin_BMP)
Debug "ok"
EndIf
ElseIf ImageFormat(#Image) = #PB_ImagePlugin_PNG
UsePNGImageEncoder()
; Remplace l'image pour la nouvelle.
If SaveImage(#Image, CheminFichier$ + NomFichier$ + " Réduit." + ExtentionFichier$, #PB_ImagePlugin_PNG)
Debug "ok"
EndIf
Else
EndIf
EndIf
EndProcedure
LireImage()
Peut être que d'autres en on aussi, mais je prends GIMP car c'est lui que j'ai et qu'il est Gratuit.
Pour finir, télécharger: https://pnggauntlet.com/
Et passez votre image avec.
La taille de votre image à beaucoup réduit et ça en conservant quasiment ça qualité, pertes non visible.
Voilà !