Code : Tout sélectionner
;***********************************************
;Titre :*exemple_utilisation_imageMagick
;Auteur : Zorro
;Date :10/06/2017
;Heure :19:04:22
;Version Purebasic : PureBasic 5.60 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : telecharger ImageMagick
;***********************************************
;Telecharger imagemagick ici:
; http://www.imagemagick.org/script/download.php#windows
; installez le dans un coin de votre disque dur , soit C:\ soit comme pour moi D:\ImageMagick-7.0.5-Q1\
; j'ai juste changé la lettre du lecteur
; pour faire du Gif Animé avec ImageMagick : voici le code en Pb
; notez que je converti des images Bmp situées dans le dossier "D:\Dobro\PureBasic\dobro\ExemplePerso\Graphisme\imagemagik_exemple_Purebasic\images_frame\"
; et que je met le résultat du Gif Animé au meme endroit
; par contre je lance imageMagick qui lui est situé dans son repertoire : "D:\ImageMagick-7.0.5-Q16\magick.exe"
; la ligne de commande se compose de l'action a effectuer :"convert" , puis des parametres pour la convertion (une animation faites d'images séparées par un delay de 200 millisecondes , en boucle )
; puis viens ensuite l'emplacement des images a convertir, et l'emplacement du résultat GIF animé :)
Declare traitement(param1.s,file_entre.s,file_sortie.s)
Global Path_Imagemagick.s="D:\ImageMagick-7.0.5-10-portable-Q16-x64\magick.exe"
;dossier.s=PathRequester("choisir le dossier des images BMP a convertir","D:\")
;Convertion_Gif_anime(dossier.s)
;-Gif Animé
; ******************** Faire un Gif Animé **************************************
;File_entre.s=PathRequester("montrer l'endroit ou se trouve les images bmp a convertir",GetCurrentDirectory())
;File_entre.s=File_entre.s+"*.bmp"
;File_sortie.s=GetPathPart(File_entre.s)+"Gif_Anime.gif"
;Traitement("convert -delay 20 -dispose Background -loop 0" ,File_entre.s,File_sortie.s ) ; Faire un Gif Animé a partir de plusieurs images
; ***************************************************************************
;-resize image Proportionel
; ********************* Changer la taille d'une image en largeur 800 en respectant la proportion (en creant un clone ) ***
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a resizer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".jpg"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;Traitement("convert -resize 800x ",File_entre.s,File_sortie.s) ; resize avec 800 de large , sans toucher a la proportion
; ******************************************************************************************
;-resize image
; *************************Changer la taille d'une image en 800x600 ***************************************
; File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a resizer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".jpg"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;Traitement("convert -resize 800x600 ",File_entre.s,File_sortie.s) ; resize avec 800 de large , 600 de haut
; *****************************************************************************************************
;-resize par pourcentage
; *************************Changer la taille d'une image en 800x600 ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a resizer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".jpg"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;Traitement("convert -resize 50% ",File_entre.s,File_sortie.s) ; resize a 50% de l'original
; *****************************************************************************************************
;-conversion de format
; *************************Convertir un Jpg en Png ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a convertir",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert ",File_entre.s,File_sortie.s) ; conver ti un format dans un autre
; *****************************************************************************************************
;-image to icone
; *************************Faire une icone a partir d'une image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a iconifier",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".ico"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;Traitement("convert -colors 256 -resize 32x32 ",File_entre.s,File_sortie.s) ; resize a 50% de l'original
; *****************************************************************************************************
;image niveau de gris
; *************************Convertir une image en niveau de gris ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a mettre en niveaux de gris",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".jpg"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;Traitement("convert -type Grayscale ",File_entre.s,File_sortie.s) ; resize a 50% de l'original
; *****************************************************************************************************
;-ajout Watermark
; *************************Ajout d'un watermark Simple sur image***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a tagger",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"+".jpg"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s
;File_temp.s=GetPathPart(File_entre.s)+"WATERMARK_FILE.png"
;Traitement("convert -size 640x400 xc:none -font Arial -pointsize 124 -gravity center -draw "+chr(34)+"fill white text 1,1 'By Dobro' text 0,0 'By Dobro' fill black text -1,-1 'By Dobro' "+chr(34) ,"",File_temp.s) ; on creer d'abord une image transparente du watermark text Corp 24
;Traitement("composite -dissolve 50% -gravity center -tile "+File_temp.s ,File_entre.s,File_sortie.s) ; puis on assemble en "fondu" (dissolve 50%) l'image entré, et le watermark pour creer une image finale regroupant les deux
;;**** -tile = permet de multiplier l'affichage de l'image watermark dans l'image de sortie
;****-gravity south pour etre en bas ou bien -gravity Center , pour mettre le watermark au centre
;****-size 640x400 donne la taille de l'image Watermark ,
;**** xc:none ; dit que c'est un fond transparent
; *****************************************************************************************************
;-modifier contraste et lumiere
; *************************changer le contraste ou la lumiere d'une image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a modifier le contraste",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert +contrast +contrast +contrast ",File_entre.s,File_sortie.s) ; conver ti un format dans un autre
; ***-contrast augmente le contrast , le faire plusieurs fois augmente encore plus (3 fois dans l'exemple ci dessus)
; ***+contrast diminue le contrast , le faire plusieurs fois diminue encore plus
; ***-modulate 200 augment a fond la luminosité
; ***-normalize permet un reglage automatique du contraste
; *****************************************************************************************************
;-rotation d'image
; *************************rotation d'une image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a modifier la rotation",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -rotate -30 ",File_entre.s,File_sortie.s) ;
; ***rotate -30 pour rotation de 30 degres a gauche , et Rotate 30 pour rotation de 30 degres a droite
; *****************************************************************************************************
;- Blur (Flou)
; *************************Flou (Blur) sur image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a Flouter",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -blur 4x4 ",File_entre.s,File_sortie.s) ;
; *** -blur 0x0 a -blur 8x8 (radiusxsigma)
; *****************************************************************************************************
;- Blur Gaussian (Flou gaussien meilleur pour les photos)
; *************************Flou (-gaussian-blur) sur image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a Flouter",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -gaussian-blur 4x4 ",File_entre.s,File_sortie.s) ;
; *** -gaussian-blur 0x0 a -gaussian-blur 8x8 (radiusxsigma)
; *****************************************************************************************************
;-gamma Global value entre 0.8 et 2.3
; *************************Gamma global (-Gamma valeur) sur image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -gamma 1.5 ",File_entre.s,File_sortie.s) ;
; *** -gamma value entre 0.8 et 2.3 inferieur a 1 assombri l'image
; *****************************************************************************************************
;-gamma value entre 0.8 et 2.3
; *************************Gamma par composante couleur sur image ***************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg ",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -channel red -gamma 1.5 ",File_entre.s,File_sortie.s) ; change le Gamma sur la composante rouge seulement
; *** -channel permet de difinir sur quel composante on travail ça peut etre :Red, Green, Blue, Alpha, Cyan, Magenta, Yellow, Black, RGB, RGBA, CMYK, ou CMYKA.
; *****************************************************************************************************
;-deformation -swirl degres
; *************************Deformation -swirl degres (tourbillon )**************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a tordre",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -swirl 90 ",File_entre.s,File_sortie.s)
; *** -channel permet de difinir sur quel composante on travail ça peut etre :Red, Green, Blue, Alpha, Cyan, Magenta, Yellow, Black, RGB, RGBA, CMYK, ou CMYKA.
; *****************************************************************************************************
;-deformation -wave amplitude,longueur de l'onde
; *************************Deformation -wave amplitude *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a tordre",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -wave 5,150 ",File_entre.s,File_sortie.s)
; ***-wave amplitude,longueur de l'onde
; *****************************************************************************************************
; -shade Ombrage d'une image en utilisant une source lumineuse distante. (Effet NExt Cube)
; ************************* ombrage d'une image *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a ombrer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -shade 60,60 ",File_entre.s,File_sortie.s)
; *** -shade azimuth/ elevation
; *****************************************************************************************************
; -solarize pourcent Solarisation d'une image
; ************************* Solarisation d'une image *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a ombrer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -solarize 30% -gamma 1.5 ",File_entre.s,File_sortie.s)
; *** -solarize pourcentage
; *****************************************************************************************************
;-sepia tone tons sepia pour une photo
; ************************* ons sepia pour une photo *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a sepia-iser",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -sepia-tone 100% ",File_entre.s,File_sortie.s)
; *** -sepia pourcentage
; *****************************************************************************************************
;-Posterize (reduction du nombre de niveau de couleur dans l'image )
; ************************* reduction du nombre de niveau de couleur *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg a traiter",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -posterize 2 ",File_entre.s,File_sortie.s) ; ici chaque couleur de l'image aura 2 niveaux (0 ou 1)
; *** -sepia pourcentage
; *****************************************************************************************************
;-negate (Negatif de l'image )
; ************************* Negatif de l'image *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg negativer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -negate ",File_entre.s,File_sortie.s) ;negatif de l'image
; *** -sepia
; *****************************************************************************************************
;-normalize (Transforme une image pour couvrir la gamme complète des valeurs de couleur. )
; *************************Normalize l'image *************************************
;File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg negativer",GetCurrentDirectory(),"*.jpg",1)
;nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
;File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
;Traitement("convert -normalize ",File_entre.s,File_sortie.s) ;negatif de l'image
; *** -normalize
; *****************************************************************************************************
;-color (chnage le nombre de couleurs utilisé dans l'image )
; ************************* Color *************************************
File_entre.s=openfileRequester( "montrer l'endroit ou se trouve l'image jpg modifier",GetCurrentDirectory(),"*.jpg",1)
nom.s=GetFilePart(File_entre.s,#PB_FileSystem_NoExtension)+"_modif"
File_sortie.s=GetPathPart(File_entre.s)+nom.s+".png"
Traitement("convert -colors 16 ",File_entre.s,File_sortie.s) ;ici on refait l'image avec seulement 16 couleurs !!!
; *** -normalize
; *****************************************************************************************************
;-display resultat
; *************************display l'image ***************************************
RunProgram(File_sortie.s, "", "")
; *****************************************************************************************************
;-Zone Procedures
Procedure Traitement(param1.s,File_entre.s,File_sortie.s)
; By Zorro
Parametre.s =param1.s+" "+File_entre.s+" "+File_sortie.s; ici on creer l'animation
;debug Parametre.s
Prg= RunProgram(Path_Imagemagick.s, Parametre.s, "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Error|#PB_Program_Hide)
Sortie$ = ""
Delay(50)
If Prg
While ProgramRunning(Prg)
While AvailableProgramOutput(Prg)
Sortie$ + ReadProgramString(Prg)
Wend
Sortie$ + ReadProgramError(Prg)
Wend
While AvailableProgramOutput(Prg)
Sortie$ + ReadProgramString(Prg)
Wend
If Sortie$ <> ""
Sortie$ + Chr(13)
EndIf
Sortie$ + ReadProgramError(Prg) ;
Sortie$ + Chr(13) + Chr(13)
Sortie$ + "Code de retour : " + Str(ProgramExitCode(Prg))
CloseProgram(Prg) ; Ferme la connection vers le programme
EndIf
If findstring(Sortie$,"Code de retour : 0")=0
MessageRequester("Sortie", Sortie$)
Endif
EndProcedure
;