Extention .png ?

spinosorus Messages postés 34 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 8 mai 2009 - 7 déc. 2006 à 12:24
deleplace Messages postés 40 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 mars 2009 - 23 févr. 2009 à 17:47
bonjour a tous,

J'ai traité des images qui ont une extention (png) et lorsque je voulais l'importer en vb6, il m'as pas accepter cette extention.
Le probleme que lorsque j'ai changé l'extention en (jpg) la qualité d'image est changé ce qui a ifluencé l'affichage
- Existe t'il un moyen pour qu'il m'accepte  les extentions (png)?
- Existe t'il un moyen aussi  pour ajouter des autres couleur a la palette de vb6 ? 

Merci pour votre aide

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 déc. 2006 à 12:59
Non vb6 ne gère pas de base les fichiers png ! A la limite, convertit les en bitmap, tu n'aura pas de perte de qualité, ou alors utilise la GDI+ et non la GDI32 pour gérer tes images.
Pour ajouter des couleurs à la palettes de vb : menu Affiches/Palettes des couleurs, et tu peux personnaliser les cases blanches en bas de la palette.
0
spinosorus Messages postés 34 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 8 mai 2009
7 déc. 2006 à 13:55
Comment je peux  travailler avec GDI ou le GDI32 via le vb ?
car ci la premiere fois que j'entend ce terme de GDI

Merci
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 déc. 2006 à 16:45
Lol

vb6 utilise la GDI32 pour gérer l'affichage des graphiques. C'est bien, ca marche bien, mais ca commence à dater !
Donc je te conseille d'utiliser la GDI+ qui est une "extension" objet de la gdi32. Tu peux trouver des wrappers sur le site de vbaccelerator.com par exemple.
0
deleplace Messages postés 40 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 mars 2009
23 févr. 2009 à 17:47
ce n'est pas l'extention du fichier qui gène loadpicture mais le contenu du fichier
voici un code assez simple utilisant GdiPlus
if te permettra en plus de convertir de BMP,JPG,PNG,GIF,TIF ou RLE vers BMP,JPG,PNG,GIF
voici le code:
Private Declare Function GdiplusStartup& Lib "gdiplus" (Token&, inputbuf As Any, Optional ByVal outputbuf&)
Private Declare Sub GdiplusShutdown Lib "gdiplus" (ByVal Token&)
Private Declare Function GdipLoadImageFromFile& Lib "gdiplus" (ByVal FileName$, image&)
Private Declare Function GdipSaveImageToFile& Lib "gdiplus" (ByVal image&, ByVal FileName$, clsidEncoder As Any, encoderParams As Any)
Private Declare Sub GdipDisposeImage Lib "gdiplus" (ByVal image&)


'AnyFormat veut dire BMP,PNG,GIF,JPG, TIF ou RLE


Private Sub LoadPictureAnyFormat(File$, Pic as PictureBox)
 Dim TMP$
 TMP= environ("TMP") & "\Tmpbmp.tmp
 if Convert(File,TMP,0) then exit sub 'Conversion Bmp Failde
 Pic.picture=loadpicture(Tmp)
 Kill TMP
End Sub


PriVate Function AnyFormatToBmp&(Source$,Cible$)
'Function Inutile Convert(Source,Cible) fait exactement la même chose
 AnyFormatToBmp=Convert(File,TMP,0)
End Function
'Si Source posede une couche Alpha, Cible sera un Bmp32Bits(avec couche Alpha)


PriVate Function AnyFormatToPng&(Source$,Cible$)
 AnyFormatToPng=Convert(File,TMP,1)
End Function
'Problème si source est un BMP 32 Bits(couche alpha) dans le PNG résultant la couche Alpha sera perdue




PriVate Function AnyFormatToGif&(Source$,Cible$)
 AnyFormatToGif=Convert(File,TMP,2)
End Function


PriVate Function AnyFormatToJpg&(Source$,Cible$,Optional TauxJpg& = 75)
 AnyFormatToJpg=Convert(File,TMP,TauxJpg)
End Function


Private Function Convert&(Source$, Destination$, Optional Q&)
'Q: 0Bmp 1Png 2Gif Autre QJpg
Dim img&, L&(11), T&, S$, Token&L(4) 1: If GdiplusStartup(Token, L(4)) Then Convert 18: Exit Function
Convert = GdipLoadImageFromFile(StrConv(Source, vbUnicode), img): If Convert Then Exit FunctionT Q: If T 1 Then T = 6
If Q > 2 Or Q < 0 Then T 1: L(5) &H1D5BE4B5: L(6) = &H452DFA4A: L(7) = &HB35DDD9C L(8) &HEBE70551: L(9) 1: L(10) = 4 If Q < 0 Then L(11) VarPtr(Not Q) Else L(11) VarPtr(Q)
End IfL(0) &H557CF400 + T: L(1) &H11D31A04: L(2) = &H739A&: L(3) = &H2EF31EF8
Convert = GdipSaveImageToFile(img, StrConv(Destination, vbUnicode), L(0), L(4)) ', ByVal 0) autre que Jpeg
GdipDisposeImage img: GdiplusShutdown Token
'Convert returns:
'0 Ok,GenericError,InvalidParameter,OutOfMemory
'4 ObjectBusy,InsufficientBuffer,NotImplemented,Win32Error
'8 WrongState,Aborted,FileNotFound,ValueOverflow
'12 AccessDenied,UnknownImageFormat,FontFamilyNotFound,FontStyleNotFound
'16 NotTrueTypeFont,UnsupportedGdiplusVersion,GdiplusNotInitialized,PropertyNotFound
'20 PropertyNotSupported
End Function
0
Rejoignez-nous