在内存中将BMP文件转换为JPG内存流,怎么用GdipSaveImageToStream函数

aaaaaaltf 2008-05-29 12:43:09
我在内存中将BMP文件转换为JPG内存流,用GdipSaveImageToStream函数,但我用以下代码却没用
Dim FileStream() as Byte, MemID As Long
Redim FileStream(1048576) '分配1M空间
...
...
...
MemID = CLng(VarPtr(FileStream(0)))
lRes = GdipSaveImageToStream(lBitmap, MemID, tJpgEncoder, aEncParams(1))
不知什么原因,一运行VB就出现错误退出了
...全文
781 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaaaaaltf 2008-05-31
  • 打赏
  • 举报
回复
我问的是在内存中用GdipSaveImageToStream函数, 将BMP文件转为JPG内存流,而不是用GdipSaveImageToFile函数 将BMP文件转为JPG文件的.
源码:
Public Sub SaveJPG(ByVal pict As StdPicture, ByVal filename As String, _
Optional ByVal quality As Byte = 80)
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long

' 初始化 GDI+
tSI.GdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI)

If lRes = 0 Then

' 从句柄创建 GDI+ 图像
lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)

If lRes = 0 Then
Dim tJpgEncoder As GUID
Dim tParams As EncoderParameters

'初始化解码器的GUID标识
CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), _
tJpgEncoder

' 设置解码器参数
tParams.Count = 1
With tParams.Parameter ' Quality
' 得到Quality参数的GUID标识
CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID
.NumberOfValues = 1
.type = 4
.Value = VarPtr(quality)
End With

'保存图像

Dim FileStream() As Byte, MemID As Long
ReDim FileStream(1048576) '分配1M空间
MemID = CLng(VarPtr(FileStream(0)))


lRes = GdipSaveImageToFile( _
lBitmap, _
StrPtr(filename), _
tJpgEncoder, _
tParams)

' 销毁GDI+图像
GdipDisposeImage lBitmap

End If

'销毁 GDI+
GdiplusShutdown lGDIP

End If

If lRes Then
Err.Raise 5, , "不能保存这个图像:" & lRes
Else
MsgBox "文件转换成功!"
End If

End Sub


Private Sub Form_Load()
Picture1.Picture = LoadPicture("c:\temp.bmp")
Call SaveJPG(Picture1.Picture, "c:\c.jpg", 10)
End Sub

我就是想通过这个函数在内存中实现转换,用GdipSaveImageToStream函数储存在内存流中,而不是文件中.






迈克揉索芙特 2008-05-29
  • 打赏
  • 举报
回复
再看看龙老大的源码:
http://www.cnblogs.com/MaxIE/archive/2007/01/11/617666.html
迈克揉索芙特 2008-05-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080508/15/2b99269e-874a-4378-b66e-59f2964a19ba.html

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧