【问题标题】:Bitmap while assigning height width crashes分配高度宽度时的位图崩溃
【发布时间】:2011-07-26 13:50:52
【问题描述】:
Dim objBmpImage AS Bitmap = New Bitmap(9450, 6750)

在执行上述代码行时应用程序崩溃 - 参数异常 - 参数无效。

请指教。

【问题讨论】:

  • 这是否为您编译,objBmpImage 甚至没有初始化
  • 现在请检查问题。打印错了

标签: vb.net


【解决方案1】:

我认为这个位图需要一个巨大的连续非托管内存来存储位图位。 比您的流程可用的更多。因此,不支持您想要的尺寸的一种说法。尝试减少它会起作用。

【讨论】:

  • 可能是真的。图像面积为 63,787,500 像素。每像素 32 位,即 2,041,200,000 位(255,150,000 字节)
  • 目前 RAM 为 2 GB。执行此代码的硬件是否正确?
  • 它在 9000 * 6000 时工作正常。之后它开始崩溃
  • 我将 RAM 增加到 3 GB 仍然是同样的问题
  • 这不是我要求的问题的答案。我尝试在另一台具有相同机器配置的机器上执行同一行,并且它有效。但仍然不明白为什么在我的机器上崩溃。所以显然这不是内存问题。
【解决方案2】:
Dim objBmpImage AS Bitmap = New Bitmap(objYourOriginBmpImage, New Size(9450, 6750))

您在错误的上下文中三次使用了名称 objBmpImage

【讨论】:

  • 当我发布我的答案时,原始代码 sn-p 是:Dim objBmpImage AS objBmpImage = New Bitmap(objBmpImage, New Size(9450, 6750))
  • 是的,写错了
  • 你确定这行抛出了 ArgumentException 吗?
  • 是的,关于更多的事情,我准备了示例应用程序,它在那里工作正常,但在项目中同一行正在崩溃
【解决方案3】:

U r 在实际创建位图构造函数之前使用相同的对象。尝试将已经存在的位图传递给构造函数。

【讨论】:

  • 请立即检查问题。打印错了
  • 我认为你提到的尺寸非常大。保持一些较小的尺寸并尝试。
  • 其实这些是来自数据库的动态坐标。所以,我们不能改变它。
  • 检查位图接受的最大值,如果数据库中的值大于此值,请将数字限制为最大值。
  • 不,我们不能那样做。图像将根据来自数据库的坐标创建。
【解决方案4】:

您的位图太大而无法处理(我认为您将达到 2GB 的限制)。

尝试以更小的块处理它,并在必要时将文件合并在一起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多