Dim newbitmap As Bitmap = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)当宽和高参数分别大致大于19000和17000的时候,就提示参数错误
为什么这个参数有上限呢,因为对方的图片dpi比较高,是300,图片也比较大,要求3米*3米,那么换算出来的像素宽度高度就很大,那怎么创建这么大的一个bitmap呢?

解决方案 »

  1.   

    19000x17000x4=1.3GB的确很大了
      

  2.   


    别啊,肯定有办法啊,客户需要创建1个大图,3米*3米,是米不是像素,而且大图的dpi是300,这样换算下来像素大概是35000
    然后他要往大图里不同位置画一堆的小图进去,也是dpi300的,现在问题,bitmap不给创建这么大的图,像素最高19000*17000大概,这怎么办好呢
      

  3.   

    推荐给你一个第三方的图像处理库:NetVips,最大可以输出65000*65000的jpg,而且占的内存比bitmap小很多。
    我最近也是做输出超大图片的功能,找到了这个库。
    官网地址:https://kleisauke.github.io/net-vips/index.html
      

  4.   


    我很好奇,他是怎么判断什么时候超过最大限制的
    按 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
      

  5.   

    这个上限会不会是byte[]数组的上限?
    或者是在实例化bitmap的时候他会提前分配内存,如果当前可用内存不够就会报错。