Source=System.Drawing
StackTrace:
在 System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
在 System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
由于项目需要导出完整图片,我使用Bitmap(int width, int height)创建Bitmap并保存,但是在实际中有些时候width和height比较大,超过了10000,在new的时候就报参数无效的错误,但是由于项目要求,又不能对图片进行切割,请问还有没有别的方法可以让我导出这种超大尺寸的图片吗?
这是我的问题截图:(VS2019)
http://bbs.csdn.net/topics/310014905 创建超大图。
http://bbs.csdn.net/topics/90300658 转成流处理。
以上两种方法你都可以试试,个人觉得转成流会更好一点,不用考虑大小了。
你好,我现在要做的是new 一个1w*1w的Bitmap,还没做到保存读取的地步呢,你给的两个链接我也都看过了,没发现有创建超大图片的方法。
第一个链接讲的就是生成超大的图片的方法,你细看一下,另外第二个链接也是讲用流生成大图片。
你好,第一个链接是验证他们的电脑最大能创建多大的图片,但是明显的不符合我的要求,也许的电脑运行的程序太多了,我这儿能创建的最大的图片都不超过1W。这两个链接我前后算上今天看了3天了。
呃 不好意思~我误解你了, 文中也有提到,与电脑的内存有关系,建议你可以测试一下,找一台大内存的机器试试。
没事,我这机器上开了俩VS2012,还有浏览器,QQ等各种软件,我估计得另辟途径,要是能直接在硬盘上创建个Bitmap,就好了,这样就不会有这种大小的限制了。
在硬盘生成是不可以的,因为生成Bitmap的代码是在内存中处理的,只有生成完后才能保存了硬盘,所以还是换机器测试吧
。
请问你的Bitmap是android中的吗?
不是,就是普通的Winform,C#.Net运行在桌面上的应用程序。
试了一下, 创建Drawing.Bitmap的函数时会分配其相应的内存,分配的内存数则是很简单的 长*宽*4 了。
当申请20000*20000大小的图片的时候,需要1.57g内存,而默认的winform程序是32位的,分配不到1.5g内存的,申请内存失败后就报这个参数异常了。此时把程序改成64位的就没有问题了。
只要没有超过内存限制,简单的改用64位程序就可以处理很大的图片了。
对于超大图片,则需要根据bmp文件的格式自己写算法划片处理,直接生成文件了
。
最后解决这个创建超大图片的问题了。
首先将图片分割成m * n个小图片,分别使用GDI+绘制出来,然后使用GDAL组件把这些图片合并起来,就OK了。
问:捕捉到 System.ArgumentException Message=参数无效。 Source=System.Drawing StackTrace: 在 System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) 在 System.Drawing.Bitm...
查看代码发现
参数
给的Wdith,Height都是符合范围的。经查询发现时内存泄漏
导致
创建
Bitmap
对象失败。内存占用已经达到1.3G左右了。所以内存泄漏
问题
导致
了
Bitmap
创建
异常
问题
。特记录一下。
关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服务器所响应,看来它的错误报警然后查询了部分资料现在将整理的解决方法总结如下:点击update 事件无法响应原因出在回发或回调
参数
无效
。在配置中使用
或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回 调事件的
参数
是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 Clie
要将 `System.Windows.Media.Imaging.
Bitmap
Image` 和 `System.Drawing.
Bitmap
` 互相转换,可以使用以下代码:
```csharp
// 将
Bitmap
Image 转换为
Bitmap
public static
Bitmap
Bitmap
Image2
Bitmap
(
Bitmap
Image
bitmap
Image)
using (MemoryStream outStream = new MemoryStream())
Bitmap
Encoder encoder = new Bmp
Bitmap
Encoder();
encoder.Frames.Add(
Bitmap
Frame.Create(
bitmap
Image));
encoder.Save(outStream);
Bitmap
bitmap
= new
Bitmap
(outStream);
return new
Bitmap
(
bitmap
);
// 将
Bitmap
转换为
Bitmap
Image
public static
Bitmap
Image
Bitmap
2
Bitmap
Image(
Bitmap
bitmap
)
using (MemoryStream outStream = new MemoryStream())
bitmap
.Save(outStream, ImageFormat.Bmp);
Bitmap
Image
bitmap
Image = new
Bitmap
Image();
bitmap
Image.BeginInit();
bitmap
Image.StreamSource = new MemoryStream(outStream.ToArray());
bitmap
Image.CacheOption =
Bitmap
CacheOption.OnLoad;
bitmap
Image.EndInit();
return
bitmap
Image;
需要注意的是,这两个类所在的命名空间是不同的,因此要先引入相应的命名空间:
```csharp
using System.Windows.Media.Imaging;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
《Operating System Concepts(操作系统概念)》课程学习(3)——Chapter 3 Operating System Structures(第3章 操作系统结构)
IDE(12)——VS系列(12)——使用VS创建网页
AE错误:缓存预览需要2个或多个帧才能播放