Sauvegarder transparence image en .net

zoglub14 Messages postés 62 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 16 octobre 2007 - 18 avril 2006 à 10:45
zoglub14 Messages postés 62 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 16 octobre 2007 - 19 avril 2006 à 19:35
Bonjour,

Je travaille depuis peu en VB 2005 .Net, j'aurais deux questions sur un controle picturebox et la sauvegarde de l'image qu'il contient.

J'ai fait un petit programme qui redimensionne automatiquement l'image sélectionnée et qui la sauvegarde en .GIF, avec la commande imageFormat.gif. Tout fonctionne impeccablement sauf que le fonds de l'image passe en noir même si, sur celle de départ, il etait transparent.

1 - Comment sauvegarder une image en GIF avec le fonds transparent ?

2 - Je me suis apercu que l'image perdait pas mal en qualité, je la passe de 256x256 en 32x32 et pourtant mon résultat final est de qualité très médiocre. Comment eviter cette perte de qualité ? Je pensais perdre en qualité quand on augmentait la taille d'une image mais pas quand on la réduisait !!

Merci d'avance.

Bonne journée,

Zorglub

5 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
18 avril 2006 à 10:56
salut,



>>1. le problème vient sans doute du PictureBox.

pour dessiner les images, je préfère le faire moi-même.

il faut créer un contrôle héritant de Control (ou de ContainerControl, son papa).

dans le contructeur :

SetStyle(SupportTransparentBackColor, True)

dans le Paint :

e.Graphics.DrawImage(...)



>>2. il faut obtenir un thumbnail :

Image.GetThumbnailImage(thumbSize.Width, thumbSize.Height, Nothing, New IntPtr())


[ Dalida ]<hr>
pensez à indiquer le langage utilisé et sa version !
0
zoglub14 Messages postés 62 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 16 octobre 2007
18 avril 2006 à 19:47
RE all,

Merci Dalida de ta réponse.

Mais pourrais-tu detailelr ton setstyle, car je ne comprends pas bien.

Merci d'avance

@+

Zoglub
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
19 avril 2006 à 13:09
salut,



t'embete pas je pense que j'ai repondu trop vite.

tes problèmes de transparence ne se pesent qu'une fois le fichier enregistré ?

si oui, oublie mon conseil 1, il tente de répondre à un problème d'affichage.



pour l'enregistrement, comment fais-tu ?

je viens de tester Image.Save("filePath\fileName.gif") et tout fonctionne très bien.

je l'ai fait avec un jpg, un gif et un png. avec taille d'origine et retaillé. aucun problème.

j'ai même créé une nouvelle image, rempli le fond en transparent, dessiné un bitmap dessus et toujours pas de problème.



pour retailler, as-tu testé le GetThumbnail ?

[ Dalida ]<hr>
pensez à indiquer le langage utilisé et sa version !
0
zoglub14 Messages postés 62 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 16 octobre 2007
19 avril 2006 à 19:33
Bonjour Dalida,

Effectivement pour le retaillé GetThumbnail fonctionne parfaitement. Deux petites choses me chagrine donc.

Cette histoire de transaprence et le fait que la qualité que j'obtiens est bof bof !

En effet mon image en 256x256 je la sauvegarde avec mon prog en 128x128 j'ai une qualité moyenne, alors que si je fait la même avec photofilter ou photoshop par exemple la qualité est impeccable.

Voila je creuse si tu as des idées je suis preneur !!

@+

Zorglub
0

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

Posez votre question
zoglub14 Messages postés 62 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 16 octobre 2007
19 avril 2006 à 19:35
Re,

Voici le code que j'utilise pour retailler et sauvegarder mon image :


Function Redim_Image(
ByVal Args
As
String,
ByVal Destination
As
String, _



ByVal TailleW
As
Integer,
ByVal TailleV
As
Integer)
As
String



Try



'charge image d'origine



Dim Img
As Drawing.Image


Img = Drawing.Image.FromFile(Args)



Dim Int_Height
As
Integer = TailleW * Img.Height / Img.Width



Dim B
As
New Bitmap(TailleW, TailleV)



Dim G
As Graphics = Graphics.FromImage(B)


G.DrawImage(Img, 0, 0, TailleW, TailleV)


G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality


G.CompositingQuality = Drawing2D.CompositingQuality.GammaCorrected


G.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic



If IO.File.Exists(Destination)
Then IO.File.Delete(Destination)


B.Save(Destination, Drawing.Imaging.ImageFormat.Gif)



Return
String.Empty



Catch ex
As Exception



Return ex.Message



End
Try



End
Function

@+

Zorglub
0
Rejoignez-nous