Page 2 sur 2

Re: Extracteur d'icones et Transfert d'icone

Publié : lun. 02/oct./2017 22:05
par Ollivier
Falsam a écrit :@zaphod_b: Je ne sais pas pourquoi je sens que tu es dans les choux.
PureBasic à une superbe librairie Clipboard qui comportes ces fonctions
-ClearClipboard()
-GetClipboardImage()
-GetClipboardText()
-SetClipboardImage()
-SetClipboardText()
Ah! Je ne dirais pas ça!
Je pense qu'il te semble que Zaphod est dans les choux.

Pourtant, sa fonction Wicrosoft elle englobe toutes celles que tu vantes (à juste titre) ci-dessus et en permet d'autres qui n'existent pas dans cette librairie native.

Il ne manque plus que sa réciproque (get au lieu de set), ainsi que ses équivalents Linux pour obtenir une belle amélioration de la lib native.

A moins que je me trompe... Ça peut sembler hors sujet, mais l'idée est franchement constructive. D'autant plus que MLD ne précise pas vraiment ce qu'il veut en faire en destination : un fichier icône? un fichier image ? une icône à incruster directement dans un fichier EXE? une image dans le presse-papier?

Ça semble répondre à d'autres possibilités que l'aut' breton du vannetais ne se refuserait pas de disposer.

Des fois, on voit un golf, gazon tout taillé, alors qu'on tombe sur un potager, et qu'en plus, on avait faim...

Re: Extracteur d'icones et Transfert d'icone

Publié : mar. 03/oct./2017 8:48
par MLD
@Ollivier Bonjour
Oui j'ai vu que le code de Zaphod, permet plus que le natif de PB. :lol: (Je met de coté)
En fait le petit outil que je propose sert a extraire les icônes de sont ordi, soit pour les utiliser dans un autre programme soit pour les redessinés (s'il sont libre de droit).
En fait pour pour en choisir un et le transporter dans un autre dossier, j'ai le choix entre deux solutions: 1° le presse papier. 2° choisir la cible avec TreeGadget. C'est purement une question d'ergonomie.
Aprés quelques discussions avec des amis,j'ai opté pour la 2em solution, qui semble être la plus pratique? 8O

Michel

Re: Extracteur d'icones et Transfert d'icone

Publié : mar. 03/oct./2017 9:58
par Marc56
Quand tu extrais une icône, il faut ensuite la sauvegarder dans quelque-chose (un fichier image)

Code : Tout sélectionner

; Extraire l'icône (vers la mémoire)
Ico_Extracted = ExtractIcon_(0, "shell32.dll", 1)

; Créer une image vide
CreateImage(Img_Ico, 32, 32, 32)

; Dessiner l'icône dans l'image vide
StartDrawing(ImageOutput(Img_Ico))
  DrawImage(Ico_Extracted, 0, 0)
StopDrawing()

; Sauvegarder l'image créée
Fichier_Icone.s = GetTemporaryDirectory() + "icone.bmp"
SaveImage(Img_Ico, Fichier_Icone)

RunProgram(Fichier_Icone)
Variante qui sauve toutes les images en PNG transparent

Code : Tout sélectionner

UsePNGImageEncoder()

Nb_Ico = ExtractIcon_(0, "shell32.dll", -1) -1

For i = 1 To Nb_Ico
     ; Extraire l'icône (vers la mémoire)
     Ico_Extracted = ExtractIcon_(0, "shell32.dll", i)
     
     ; Créer une image vide
     If IsImage(Img_Ico) : FreeImage(Img_Ico) : EndIf
     CreateImage(Img_Ico, 32, 32, 32, #PB_Image_Transparent)
     
     ; Dessiner l'icône dans l'image vide
     StartDrawing(ImageOutput(Img_Ico))
     DrawImage(Ico_Extracted,0,0)
     StopDrawing()
     
     ; Sauvegarder l'image créée
     Fichier_Icone.s = GetTemporaryDirectory() + "icone_" + RSet(Str(i), 3, "0") + ".png"
     SaveImage(Img_Ico, Fichier_Icone, #PB_ImagePlugin_PNG, 0, 32)
Next

MessageRequester("Terminé", Str(Nb_Ico) + " icônes extraites et sauvegardées")
RunProgram(GetTemporaryDirectory())
Note: Ces deux programmes ne tiennent pas compte de la taille de l'icône (ici 32x32).
On peut récupérer cette taille avant.

Pour la suite, au lieu de faire un fichier par icône, on peut faire un seul fichier puis "dessiner" les icônes les une à côté des autres
(Il suffit de décaler la position x ou y dans la ligne DrawImage)
Pour extraire ensuite une icône on utilise GrabImage()

Re: Extracteur d'icones et Transfert d'icone

Publié : mar. 03/oct./2017 17:18
par MLD
@Marc56
Merci
intéressant tes codes je garde.
56 dans ton pseudo, cerait tu un peu Breiz? :lol: