VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式

VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式,第1张

概述Private Type GUID     Data1 As Long     Data2 As Integer     Data3 As Integer     Data4(0 To 7) As Byte End Type Private Type GdiplusStartupInput     GdiplusVersion As Long     DebugEventCallback As L PrivateTypeGUID Data1AsLong Data2AsInteger Data3AsInteger Data4(0To7)AsByte EndType PrivateTypeGdiplusstartupinput GdiplusversionAsLong DeBUGEventCallbackAsLong SuppressBackgroundThreadAsLong SuppressExternalCodecsAsLong EndType PrivateTypeEncoderParameter GUIDAsGUID NumberOfValuesAsLong typeAsLong ValueAsLong EndType PrivateTypeEncoderParameters countAsLong ParameterasEncoderParameter EndTypePrivateDeclareFunctionGdiplusstartuplib"GDIPlus"(tokenAsLong,inputbufAsGdiplusstartupinput,OptionalByValoutputbufAsLong=0)AsLong PrivateDeclareFunctionGdiplusShutdownlib"GDIPlus"(ByValtokenAsLong)AsLong PrivateDeclareFunctionGdipCreateBitmapFromHBITMAPlib"GDIPlus"(ByValhbmAsLong,ByValhPalAsLong,BITMAPAsLong)AsLong PrivateDeclareFunctionGdipdisposeImagelib"GDIPlus"(ByValimageAsLong)AsLong PrivateDeclareFunctionGdipSaveImagetofilelib"GDIPlus"(ByValimageAsLong,ByValfilenameAsLong,clsIDEncoderAsGUID,encoderParamsAsAny)AsLong PrivateDeclareFunctionCLSIDFromStringlib"ole32"(ByValStrAsLong,IDAsGUID)AsLong PrivateDeclareFunctioncopyMemorylib"kernel32"Alias"RtlMoveMemory"(DestAsAny,SrcAsAny,ByValcbAsLong)AsLong '************************************************************************* '**作者:lavIEwpbt '**函数名:SavePic '**输入:pic(StdPicture)-图象句柄 '**:filename(String)-保存路径 '**:Quality(Byte)-JPG图象质量 '**:TIFF_colorDepth(Long)-TTF格式的颜色深度 '**:TIFF_Compression(Long)-TTF格式的压缩比 '**输出:无 '**功能描述:把图象保存为JPG、TIFF、PNG、GIF、BMP格式 '**日期: '**修改人:lavIEwpbt '**日期:2005-10-2314.43.52 '**版本:Version1.2.1 '************************************************************************* PrivateSubSavePic(ByValpictAsstdPicture,ByValfilenameAsstring,PicTypeAsstring,_ OptionalByValQualityAsByte=80,_ OptionalByValTIFF_colorDepthAsLong=24,_ OptionalByValTIFF_CompressionAsLong=6) Screen.MousePointer=vbHourglass DimtSIAsGdiplusstartupinput DimlResAsLong DimlGDIPAsLong DimlBitmapAsLong DimaEncParams()AsByte OnErrorGoToErrHandle: tSI.Gdiplusversion=1'初始化GDI+ lRes=Gdiplusstartup(lGDIP,tSI) IflRes=0Then'从句柄创建GDI+图像 lRes=GdipCreateBitmapFromHBITMAP(pict.Handle,lBitmap) IflRes=0Then DimtJpgEncoderAsGUID DimtParamsAsEncoderParameters'初始化解码器的GUID标识 SelectCasePicType Case".jpg" CLSIDFromStringStrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"),tJpgEncoder tParams.count=1'设置解码器参数 WithtParams.Parameter'Quality CLSIDFromStringStrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"),.GUID'得到Quality参数的GUID标识 .NumberOfValues=1 .type=4 .Value=VarPtr(Quality) EnDWith ReDimaEncParams(1Tolen(tParams)) CallcopyMemory(aEncParams(1),tParams,Len(tParams)) Case".png" CLSIDFromStringStrPtr("{557CF406-1A04-11D3-9A73-0000F81EF32E}"),tJpgEncoder ReDimaEncParams(1Tolen(tParams)) Case".gif" CLSIDFromStringStrPtr("{557CF402-1A04-11D3-9A73-0000F81EF32E}"),tJpgEncoder ReDimaEncParams(1Tolen(tParams)) Case".tiff" CLSIDFromStringStrPtr("{557CF405-1A04-11D3-9A73-0000F81EF32E}"),tJpgEncoder tParams.count=2 ReDimaEncParams(1Tolen(tParams)+Len(tParams.Parameter)) WithtParams.Parameter .NumberOfValues=1 .type=4 CLSIDFromStringStrPtr("{E09D739D-CCD4-44EE-8EBA-3FBF8BE4FC58}"),.GUID'得到colorDepth参数的GUID标识 .Value=VarPtr(TIFF_Compression) EnDWith CallcopyMemory(aEncParams(1),Len(tParams)) WithtParams.Parameter .NumberOfValues=1 .type=4 CLSIDFromStringStrPtr("{66087055-AD66-4C7C-9A18-38A2310B8337}"),.GUID'得到Compression参数的GUID标识 .Value=VarPtr(TIFF_colorDepth) EnDWith CallcopyMemory(aEncParams(Len(tParams)+1),tParams.Parameter,Len(tParams.Parameter)) Case".bmp"'可以提前写保存为BMP的代码,因为并没有用GDI+ SavePicturepict,filename Screen.MousePointer=vbDefault ExitSub EndSelect lRes=GdipSaveImagetofile(lBitmap,StrPtr(filename),tJpgEncoder,aEncParams(1))'保存图像 GdipdisposeImagelBitmap'销毁GDI+图像 EndIf GdiplusShutdownlGDIP'销毁GDI+ EndIf Screen.MousePointer=vbDefault EraseaEncParams ExitSub ErrHandle: Screen.MousePointer=vbDefault MsgBox"在保存图片的过程中发生错误:"&vbCrLf&vbCrLf&"错误号:"&err.Number&vbCrLf&"错误描述:"&err.Description,vbinformationorvbOKOnly,"错误" EndSub 总结

以上是内存溢出为你收集整理的VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式全部内容,希望文章能够帮你解决VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1294613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存