《顾名思义》 《顾名思义》
关注数: 3 粉丝数: 271 发帖数: 16,601 关注贴吧数: 16
上次你们没回答我,这次你们一定要帮在下。。。 下面是一段把Bitmap转成JPG的代码。。。 If GdipCreateBitmapFromHBITMAP(Picture.Handle, 0, lBitmap) = OK Then hGlobal = GlobalAlloc(GMEM_MOVEABLE, Picture.Width * Picture.Height \ 256) '创建缓冲区 '创建Stream If CreateStreamOnHGlobal(ByVal hGlobal, False, picStream) = 0 Then '转换GUID If CLSIDFromString(StrPtr(ClsidJPEG), tGUID) = 0 Then '设置JPG相关参数值 tParams.Count = 1 With tParams.Parameter(0) CLSIDFromString StrPtr(EncoderQuality), .GUID .NumberOfValues = 1 .Type = EncoderParameterValueTypeLong .Value = VarPtr(JpegQuality) End With '将Bitmap数据保存到流(JPG格式) If GdipSaveImageToStream(lBitmap, picStream, tGUID, tParams) = OK Then 'GetHGlobalFromStream picStream, hGlobal picStream.Seek 0, STREAM_SEEK_CUR, dwSize '获取图像大小 lpBuffer = GlobalLock(hGlobal) '获取缓冲区读写指针 ReDim Buff(dwSize - 1): CopyMemory Buff(0), ByVal lpBuffer, dwSize '读取图像 GlobalUnlock hGlobal: GlobalFree hGlobal '释放分配的缓冲区空间 PictureToByteArray = Buff End If End If Set picStream = Nothing End If End IF 我想把多个图像**到一个文件,但又不想一个一个的转成JPG后放到硬盘上再读取组合。 就想到了这个办法。但是代码不全,以前有人发过到空间的结果那位同学把空间里的代码给删了,我的代码也丢了,只能找到如上代码。 picStream.Seek 0, STREAM_SEEK_CUR, dwSize '获取图像大小 就是这个让在下很无语。我没有IStream这个类模块所以无法得到图像大小, 我记得以前那位同学,用的是得到hGlobal这个缓冲区的大小,不知道有人知道吗?
首页 1 2 3 下一页