。NET 多图 拼接 成大图 出错

多图 拼接,每张图 大概20M左右。
在第一次 初始化 Bitmap的时候 会出现 内存不足?是什么原因?
想要初始化一个很大的图片幅面来容纳多图 ,Bitmap 能否做到?或者各位能人义士是否有其他的解决方案,
请各位达能出手 ,收了此Bug,谢谢!

在MSDN官网上介绍Bitmap.FromFile方法是基础于Image.FromFile方法的,官网链接为:http://msdn.microsoft.com/zh-cn/library/vstudio/stf701f5(v=vs.85).aspx
在上面有下面的一句话:
如果文件没有有效的图像格式,或者如果 GDI+ 不支持文件的像素格式,则此方法将引发 OutOfMemoryException 异常。

方便留个联系方式吗 我的QQ 1599447439
我做过多次实验,加载的是jpg图片,而且图片能打得开并未出现图片损坏的情况, 就是在代码加载初始化时出现 内存不足的问题 试过多种方法 都是出现内存不足的问题

GDI+ 支持的图片文件格式:位图 (BMP), 图象交换格式 (GIF),联合图像专家组(JPEG),可交换图象文件 (Exif),可移植网络图片 (PNG),标记图象文件格式 (TIFF)

拼图原理及流程:
拼图是将多个图片对象(Image/Bitmap继承自Image)重新绘制到一个图片对象,即最终的拼图对象

流程:

获取到图片对象,可通过本地或数据流获取
更具多个图片对象计算出最终生成的图片的宽高,以此初始化一个新的图片对象(拼图对象)
以像素点的方式,将要拼图的各个图片绘制到初始化的拼图对象
保存最终生成的图片,并释放图片对象(图片对象继承IDisable接口,使用using()或手动Dispose)

https://blog.csdn.net/o527883184/article/details/77387385

你初始化的时候都做了些什么?都初始化了哪些对象?

JpegBitmapEncoder encoder = new JpegBitmapEncoder();
using (MemoryStream stream = new MemoryStream())
{
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
switch (extension)
{
case ".jpg":
JpegBitmapDecoder jpegDecoder = new JpegBitmapDecoder(fs, BitmapCreateOptions.None, BitmapCacheOption.Default);
encoder.Frames.Add(BitmapFrame.Create(jpegDecoder.Frames[0]));
break;
case ".tif":
case ".tiff":
TiffBitmapDecoder tifDecoder = new TiffBitmapDecoder(fs, BitmapCreateOptions.None, BitmapCacheOption.Default);
encoder.Frames.Add(BitmapFrame.Create(tifDecoder.Frames[0]));
break;
C++图像处理库ExactImage
使用这个JpegBitmapEncoder解析图片会好些,但图片太大的话还是会爆内存不足,这个问题我同事也搞了好久没完全解决。

还有这个:ExactImage 是一个快速的 C++ 图像处理库,与ImageMagick 不同的是,ExactImage 允许对多个色彩空间和色深进行操作;更低的内存占用和CPU占用;某些优化算法速度是 ImageMagick 的 20 倍,显示大图片的速度是 ImageMagick 的 10 倍。