为什么参数有最大限制

橘子皮... 2019-11-21 08:51:51
Dim newbitmap As Bitmap = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)

当宽和高参数分别大致大于19000和17000的时候,就提示参数错误
为什么这个参数有上限呢,因为对方的图片dpi比较高,是300,图片也比较大,要求3米*3米,那么换算出来的像素宽度高度就很大,那怎么创建这么大的一个bitmap呢?
...全文
182 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
llllinlink 2019-11-22
  • 打赏
  • 举报
回复
内存溢出了吧?
llllinlink 2019-11-22
  • 打赏
  • 举报
回复
这个上限会不会是byte[]数组的上限? 或者是在实例化bitmap的时候他会提前分配内存,如果当前可用内存不够就会报错。
xiaoid 2019-11-22
  • 打赏
  • 举报
回复
这是几十年来看到的最大的位图了。
by_封爱 版主 2019-11-22
  • 打赏
  • 举报
回复
3米的图片??? 打扰了
橘子皮... 2019-11-22
  • 打赏
  • 举报
回复
引用 7 楼 llllinlink 的回复:
推荐给你一个第三方的图像处理库:NetVips,最大可以输出65000*65000的jpg,而且占的内存比bitmap小很多。 我最近也是做输出超大图片的功能,找到了这个库。 官网地址:https://kleisauke.github.io/net-vips/index.html
我很好奇,他是怎么判断什么时候超过最大限制的 按 https://bbs.csdn.net/topics/360122258 这个帖子几个人的计算公式我试了下貌似都不对,结果都不是1个常数 For w = 29000 To 40000 Dim h As Integer = 100 '尝试变化这个数值 Try Dim newbitmapa As Bitmap = New Bitmap(w, h, PixelFormat.Format32bppArgb) Catch ex As Exception msgbox( h * w * 32) End End Try Next
SASSSSS 2019-11-22
  • 打赏
  • 举报
回复
内存溢出了吧
llllinlink 2019-11-22
  • 打赏
  • 举报
回复
推荐给你一个第三方的图像处理库:NetVips,最大可以输出65000*65000的jpg,而且占的内存比bitmap小很多。 我最近也是做输出超大图片的功能,找到了这个库。 官网地址:https://kleisauke.github.io/net-vips/index.html
橘子皮... 2019-11-22
  • 打赏
  • 举报
回复
引用 3 楼 by_封爱 的回复:
3米的图片??? 打扰了
别啊,肯定有办法啊,客户需要创建1个大图,3米*3米,是米不是像素,而且大图的dpi是300,这样换算下来像素大概是35000 然后他要往大图里不同位置画一堆的小图进去,也是dpi300的,现在问题,bitmap不给创建这么大的图,像素最高19000*17000大概,这怎么办好呢
threenewbee 2019-11-21
  • 打赏
  • 举报
回复
19000x17000x4=1.3GB的确很大了

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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