Sauvegarder transparence image en .net

Signaler
Messages postés
62
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
16 octobre 2007
-
Messages postés
62
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
16 octobre 2007
-
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

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

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 !
Messages postés
62
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
16 octobre 2007

RE all,

Merci Dalida de ta réponse.

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

Merci d'avance

@+

Zoglub
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

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 !
Messages postés
62
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
16 octobre 2007

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
Messages postés
62
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
16 octobre 2007

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