准备把10张jpg大图(每张2000*11000像素),纵向合并成一张jpg,最多只能合并5张,再多就出错。有时Bitmap3=0,有时Bitmap2=0,此时保存jpg文件就是0字节了。从任务管理器查看程序,内存占用500M以上,58%以上。核心代码如下:
(!!!考虑是内存的原因,太大。有没有办法,使用类似追加的功能,多次保存生成一个大文件???)
GdipCreateBitmapFromScan0 W, H, 0, GpPixelFormat.PixelFormat32bppARGB, ByVal 0, Bitmap3
GdipGetImageGraphicsContext Bitmap3, graphic预览
For i = 0 To 10
GdipLoadImageFromFile StrPtr(文件名), Bitmap2
If Bitmap2 = 0 Then Call 信息提示("读取图片错误:Bitmap2-0")
GdipDrawImageRect graphic预览, Bitmap2, 0, TT, 列表内容(i).W, 列表内容(i).H '拉伸到 '
TT = TT + 列表内容(i).H '生成下一个图片准备top数据
Next
Call GdipBitmapSetResolution(Bitmap3, 72, 72)
!!!考虑是内存的原因,太大。有没有办法,使用类似追加的功能,多次保存生成一个大文件???
以下是保存文件代码:
Public Function SaveImageToJPG(ByVal Image As Long, _
ByVal Path As String, _
ByVal quality As Long) As GpStatus
Dim Params As EncoderParameters
Params.Count = 1
CLSIDFromString StrPtr(EncoderQuality), Params.Parameter.GUID
Params.Parameter.NumberOfValues = 1
Params.Parameter.type = 4
Params.Parameter.Value = VarPtr(quality)
SaveImageToJPG = GdipSaveImageToFile(Image, StrPtr(Path), GetImageEncoderClsid(Jpg), Params)