1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| '---------------------------------------------------------------------------------------
' Sauvegarde vers un fichier Jpeg
'---------------------------------------------------------------------------------------
' pFile : Chemin du fichier
' pQuality : Quality du fichier (0-100)
'---------------------------------------------------------------------------------------
Public Function SaveToJpg(ByVal pFile As String, Optional ByVal pQuality As Byte = 80) As Boolean
' Source : http://www.activevb.de/tipps/vb6tipps/tipp0663.html
Dim lGdiPSI As GdiplusStartupInput
Dim lRet As Long
Dim lGdipToken As Long
Dim lBitmap As Long
Dim lJpgEncoder As GUID
Dim lParams As EncoderParameters
Const lJpegEncoderStr As String = "{557CF401-1A04-11D3-9A73-0000F81EF32E}"
Const lQualityParamStr As String = "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"
On Error GoTo Gestion_Erreurs:
' Initialisation GDI + version 1
lGdiPSI.GdiplusVersion = 1
lRet = GdiplusStartup(lGdipToken, lGdiPSI)
If lRet = 0 Then
' Création d'un Bitmap Gdi+ à partir du bitmap de l'image
lRet = GdipCreateBitmapFromHBITMAP(gDIB.hDIB, 0, lBitmap)
If lRet = 0 Then
' Recherche de l'encodeur Jpeg
CLSIDFromString StrPtr(lJpegEncoderStr), lJpgEncoder
' Paramètre de l'encodeur Jpeg
lParams.Count = 1
With lParams.Parameter(0)
' Paramètrage de la qualité (0-100)
CLSIDFromString StrPtr(lQualityParamStr), .GUID
.NumberOfValues = 1
.Type = 4 ' Type Long
.Value = VarPtr(pQuality)
End With
' Sauvegarde l'image
lRet = GdipSaveImageToFile(lBitmap, StrPtr(pFile), lJpgEncoder, lParams)
' Supprime le bitmap
GdipDisposeImage lBitmap
End If
' Ferme Gdi+
GdiplusShutdown lGdipToken
End If
Gestion_Erreurs:
If Err.Number = 0 And Not lRet Then SaveToJpg = True ' renvoie vrai si pas d'erreur et fichier correctement créé
End Function |
Partager