Qualité de Icon.Save

MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012 - 26 août 2009 à 04:18
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009 - 31 août 2009 à 10:46
j'essais de faire un petit programme qui permet d'extraire une icone dans un picturebox, et la sauvegarder dans un fichier ico.
tous marche bien, on commence par ouvrir un ficher :
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            Dim MyIcon As Icon = Nothing
            MyIcon = Icon.ExtractAssociatedIcon(OpenFileDialog1.FileName)
            PictureBox1.Image = MyIcon.ToBitmap
        End If

premiere partie, parfait.

maintenant quand je click un bouton :
        Dim sfd As New SaveFileDialog
        sfd.Filter = "*.ico|*.ico"
        If Not PictureBox1.Image Is Nothing Then
            If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim file As FileStream = New FileStream(sfd.FileName, FileMode.OpenOrCreate)
                MyIcon.Save(file)
                file.Close()
                MyIcon.Dispose()
            End If
        End If


ok. lr probleme que la qualité de l'icone est trop mauvaise. je remarque que la taille du fichier est à 700 octets presque. même si on vois bien l'icone dand le picturebox en haute qualité, mais c'est foutu après le sauvegarde.

ce code est genial parceque il me permet de créer une icone bien determiné (32*32, une seule image) mais le problem c'est la qualité.

quelqun peut m'aider?? merci.
A voir également:

64 réponses

Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 10:09
Regarde dans la bibliothèque pour les primitives, (postée hier) dans "listview ...Lanceur" posté le 25 pour l'exemple: j'ai pas rencontré de difficultés particulières. Je connais pas FileStream...
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 15:07
trouvé. merci pour ta reponse.
mais mon problem n'est pas le chargement d'une icone, mais dans l'enregistrement sous fichier.ico, ce dernier est de trés mauvaise qualité.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 16:32
Et la propriété Save de la pictureBox?
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 18:02
oui je peux l'utilisé, voila le resultat:

je fai picturebox.image.save("fichier.ico",imageformat.Icon)

matnant mon icon a une image, mais s'affiche pas dans l'explorer, tu peux voir son contenu que dans l'onglet detail.
on plus, si j'essai de recharché l'icone dans la variable icon et l'afficher dans le picturebox à nouveau,j'vais avoir cette icone blanche, pas celle dans détails.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 18:19
Tu as sauvegardé une image. Maintenant, il faut lui affecter elle-même comme icone et cesser de mélanger la nature de l'objet (type de donnée) et son usage (Le système mémorise le chemin de l'image et le fichier à représenter avec cette image.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 18:20
peut-être en r'e-initialisant windows ca suffit.
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 18:51
je crois pàs ke c'est çà le probleme, pàrceke
MyIcon.Save(streàm) fonctionne bien, juste ke sà donne une icone de àvec profondeur de couleur 32.
si je trouve une soluce pour àméliorer à 256, sà doi suffir. merci.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 19:10
Bravo t'avais juste besoin d'en parler.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 19:28
Attends si tu as une profondeur de 32 c'est que ton icone est gérée comme une icone pas comme une image. A partir de vista, les posibilités s'amèliorent, mais les primitives restent compatibles sinon on feraient tous du pascal sur linux.
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 19:45
huhu oh lala je comprent plus rien...
oui je veux que l'icone sois géré comme une icone pas comme une image,pas haute qualité, mais acceptable.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 20:24
Normalement, une icone c'est 16x16 et 24 couleurs. et ça fait déjà plusieurs fois que microsoft étends les caractéristiques. On a rien dit tant que nos 8088 pouvaient assummer, mais il était temps de changer de concept. Le nouveau Windows, et les changements sont peut-être apparus discrètement avec Windows 31 puis XP et puis on vendra des réparations tant qu'on pourra pas rebooter facilement de toutes façons ça sert à rien de s'inquièter: les états ont tellement investi dans les procédures de sécurité que le laguage C pourrait survivre encore très longtemps. (Je sais pas pourquoi la démocratie investit autant dans l'abrutissement: Les élites connaissent bien les besoins du cerveau pour s'épanouir "naturellement" au-dessus des autres, mais les bourgeois ??? c'est incompréhensible.et la télé?.. et la programmation?
)
Donc Microsoft tourne la page et adopte de nouveaux vocables pour pas écraser les anciennes procédures et rester compatible. Tout le monde se plaint qu'on retrouve plus rien. C'est comme l'adresssage étendu ou multiplexé: on apprend d'abord à apprendre.

Et on a de la chance d'utiliser des bitmaps, parce qu'il y a encore les graphes, le dessin vectoriel, les textures, les frames, et surement encore bien d'autres façons de coder l'image que je préfère pas connaitre.

Les petites icones c'était bien sympa pour dicerner ses dossiers, mais le bandeau se fait de plus en plus grand avec les progrès de la définition et les images de plus en plus grosses avec l'inflation de la mémoire (c'est du sable fondu avec beaucoup de gros salaires)

Si on veut continuer à voir les icones malgré l'augmentation de la définition, il faut bien agrandir.
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 21:03
c'est à dire que je dois chercher à convertir bitmap, et pas à ameliorer icon...
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 21:19
J'ai un peu de temps à présent. (j'ai fait mon premier programme d'exemple cet après-midi.) Mainytenant je met tes icones dans la bibliothèque.
Tu disais:
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
Dim MyIcon As Icon = Nothing
MyIcon = Icon.ExtractAssociatedIcon(OpenFileDialog1.FileName)
PictureBox1.Image = MyIcon.ToBitmap
End If

Hum!
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 21:27
Il manque pas un Else derrière le nothing?
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 21:35
quand je cherche la taille "définie par le système" dans mdsn
http://msdn.microsoft.com/fr-fr/library/system.drawing.icon.tobitmap.aspx

je trouve:

Créez un formulaire et collez le code suivant dans ce formulaire

Private Sub IconToBitmap(ByVal e As PaintEventArgs)

' Construct an Icon.
Dim icon1 As New Icon(SystemIcons.Exclamation, 40, 40)

' Call ToBitmap to convert it.
Dim bmp As Bitmap = icon1.ToBitmap()

' Draw the bitmap.
e.Graphics.DrawImage(bmp, New Point(30, 30))
End Sub
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 21:47
Je fais ce qui est dit:

Private Sub Icones_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
IconToBitmap(e)
End Sub

et j'obtiens un super système d'évaluation du type Icon.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 21:52
C'est bien ça: on transtype, mais c'est pas encore automatique. On attends la prochaine version de vb qui corrigera le pb (environ tous les 15 ans pour les icones)ou on travaille en bitmap (transtypage manuel = temps de travail pour le programmeur = factures...) Si c'est ça, je retourne au wpf: autant refaire windows en 3D.
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 22:01
Si ton programme fonctionne avec mes procèdures, celà signifiera que la table des vecteurs d'interruptions qui est maintenant encapsulée dans la puce est mise à jour et que donc Bill va devoir bien s'accrocher pour pas se faire larguer par les constructeurs Hi HI HI... Heureusement qu'on est là!
0
MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
27 août 2009 à 22:06
XD merci pour ton aide loooolz oué je crois qu'on va attendre ces 15 and :p

oué c'est facile de crée les bitmap a partir les icones, graphics...ect, mais les icone non xD
0
Londonic Messages postés 298 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 26 septembre 2009
27 août 2009 à 22:07
En définitive, Microsoft règne sur un parc de processeur plus désuets que du silicium refondu.
0
Rejoignez-nous