Pour retailler une image au format icône
Pour retailler une image au format icône
Bonjour,
J'ai remarqué, comme beaucoup, que la fonction Resize(...) ne fonctionne pas avec les images de type icône (d'ailleurs vous aurez une erreur de PB qui l'indiquera).
Alors je me suis dis comment faire pour retailler quand même l'image icône.
Eh bien l'API Copyimage_(handledel'image,largeur,hauteur) fait parfaitement l'affaire.
Par contre, cette fonction ne fonctionne pas sur d'autres types d'image, mais comme Resize(...) fonctionne bien, alors nous avons tout ce qu'il nous faut.
Comme quoi les API sont devenus indispensables.
J'ai remarqué, comme beaucoup, que la fonction Resize(...) ne fonctionne pas avec les images de type icône (d'ailleurs vous aurez une erreur de PB qui l'indiquera).
Alors je me suis dis comment faire pour retailler quand même l'image icône.
Eh bien l'API Copyimage_(handledel'image,largeur,hauteur) fait parfaitement l'affaire.
Par contre, cette fonction ne fonctionne pas sur d'autres types d'image, mais comme Resize(...) fonctionne bien, alors nous avons tout ce qu'il nous faut.
Comme quoi les API sont devenus indispensables.
Re: Pour retailler une image au format icône
Tu nous montrerais un petit exemple, ce serait pas mal.
J'ai commencé à faire ça mais je ne sais pas comment continuer.
J'ai commencé à faire ça mais je ne sais pas comment continuer.
Code : Tout sélectionner
#IMAGE_BITMAP=0
#IMAGE_CURSOR=2
#IMAGE_ICON=1
#LR_DEFAULTSIZE=$00000040
iconfile=LoadImage(0,"F:\Pics\Icones\icone_ldvm.ico")
Copyimage_(iconfile,#IMAGE_ICON,100,100,#LR_DEFAULTSIZE)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Pour retailler une image au format icône
pourquoi ne pas dessiner l'icône dans une image 32 bit de la même taille ?
Ensuite, tu as accès à toutes les fonctions PB sur ton icône, y compris la fonction resize
Ensuite, tu as accès à toutes les fonctions PB sur ton icône, y compris la fonction resize
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: Pour retailler une image au format icône
Bonjour,
J'ai effectivement réussi à faire ça mais comme je ne suis pas chez moi, il faudra attendre quelques jours afin que je mette en place un programme spécifique pour l'exemple (car mon programme source est trop long et compliqué) et il faudra aussi que je le sorte sur imprimante et le tape dans le forum.
Mais étant donné que vous êtes tous les deux de véritables experts vous trouverez ça très simple, mais le principal c'est que cela fonctionne.
J'ai effectivement réussi à faire ça mais comme je ne suis pas chez moi, il faudra attendre quelques jours afin que je mette en place un programme spécifique pour l'exemple (car mon programme source est trop long et compliqué) et il faudra aussi que je le sorte sur imprimante et le tape dans le forum.
Mais étant donné que vous êtes tous les deux de véritables experts vous trouverez ça très simple, mais le principal c'est que cela fonctionne.
Re: Pour retailler une image au format icône
Bonjour,
Comme prévu voici le programme :
Comme vous le savez sans doute, CopyImage_(...) accepte les icônes mais pas tous les fichiers (par exemple il y aura une erreur si vous charger une image .jpg ou .jpeg).
Egalement, une image icône ne peut dépasser 256 X 256 pixels mais le programme ci-dessous palie cet inconvénient.
En fait, mieux vaut ne pas trop s'écarter de la taille de l'image de base car, effet bien connu, il y aura un risque de pixélisation car CopyImage_(...) se comporte comme un zoom.
Et comme je l'ai dit plus haut, la commande PB resize(...) fonctionne avec tout sauf pour les icônes et inversement pour CopyImage_(...). Donc on a tout ce qu'il nous faut.
Comme prévu voici le programme :
Code : Tout sélectionner
If OpenWindow(0,0,0,600,600,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0,10,20,190,25,"Choisissez un fichier")
ImageGadget(4,84,150,30,30,#Null)
largeur=300 ;ici la largeur de l'image que l'on désire
hauteur=300 ;ici la hauteur de l'image que l'on désire
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Gadget
Select EventGadget()
Case 0
ad$=OpenFileRequester("Choisissez un fichier","","Fichiers icône(*.ico)|*.ico",0)
If ad$
LoadImage(15,ad$)
handle=CopyImage_(ImageID(15),#IMAGE_ICON,largeur,hauteur,0)
SetGadgetState(4,handle)
Endif
EndSelect
Endif
Until Event=#PB_Event_CloseWindow
Endif
Egalement, une image icône ne peut dépasser 256 X 256 pixels mais le programme ci-dessous palie cet inconvénient.
En fait, mieux vaut ne pas trop s'écarter de la taille de l'image de base car, effet bien connu, il y aura un risque de pixélisation car CopyImage_(...) se comporte comme un zoom.
Et comme je l'ai dit plus haut, la commande PB resize(...) fonctionne avec tout sauf pour les icônes et inversement pour CopyImage_(...). Donc on a tout ce qu'il nous faut.
Re: Pour retailler une image au format icône
Merci pat pour ce code, pourrais tu penser à utiliser les balises code /code pour encadrer ton code, cela évite les erreurs de bbcode et améliore la lisibilité.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pour retailler une image au format icône
J'ai effectivement oublié de le faire car je ne suis pas trop habitué.
J'essaierai de le faire la prochaine fois.
J'essaierai de le faire la prochaine fois.
Re: Pour retailler une image au format icône
Bonjour,
Une petite précision, pour le programme ci-dessous.
Pour ceux dans leur programme qui n'utiliseront plus l'image, mieux vaut donc mettre ceci :
SetGadgetState(4,handle):DestroyIcon(handle)
Très important le DestroyIcon afin de pouvoir libérer les ressources de l'ordinateur.
Une petite précision, pour le programme ci-dessous.
Pour ceux dans leur programme qui n'utiliseront plus l'image, mieux vaut donc mettre ceci :
SetGadgetState(4,handle):DestroyIcon(handle)
Très important le DestroyIcon afin de pouvoir libérer les ressources de l'ordinateur.
Re: Pour retailler une image au format icône
Merci pour la précision et l'edition du code 

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels