C# Image.Clone 内存不足异常

标签 c# image exception

为什么会出现内存不足异常?

所以这在 C# 中第一次通过:

splitBitmaps.Add(neededImage.Clone(rectDimensions, neededImage.PixelFormat));

其中 splitBitmaps 是一个 List 但它在 VB 中至少运行 4 次迭代:

arlSplitBitmaps.Add(Image.Clone(rectDimensions, Image.PixelFormat))

其中 arlSplitBitmaps 是一个简单的数组列表。 (是的,我已经在 C# 中尝试过 arraylist)

这是完整的部分:

for (Int32 splitIndex = 0; splitIndex <= numberOfResultingImages - 1; splitIndex++)
{ 
  Rectangle rectDimensions;

  if (splitIndex < numberOfResultingImages - 1) 
  {
    rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0, 
      splitImageWidth, splitImageHeight); 
  } 
  else 
  {
    rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0, 
     sourceImageWidth - (splitImageWidth * splitIndex), splitImageHeight); 
  } 

  splitBitmaps.Add(neededImage.Clone(rectDimensions, neededImage.PixelFormat)); 

}

顺便说一句,neededImage 是位图。

我在 intarweb 上找不到任何有用的答案,尤其是不知道为什么它在 VB 中工作得很好。

更新:

我实际上找到了这个工作的一个(某种)原因,但忘了发布它。如果我记得的话,它与将图像转换为位图有关,而不是仅仅尝试克隆原始图像。

最佳答案

当 Rectangle 中指定的坐标超出位图的边界时,Clone() 也可能抛出内存不足异常。它不会自动为您剪辑它们。

关于C# Image.Clone 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/199468/

相关文章:

c# - .Net/C# 说明

JavaScript Base64 远程文件

c# - 向自定义异常添加额外信息

python异常消息捕获

Python:如何在没有 "currently being handled"异常的情况下打印异常对象的堆栈跟踪?

c# - 正则表达式:保留未知子字符串

c# - 为什么 C# 7.2 中的 Pinnable<T> 类是这样定义的?

c# - .net linq 查询连接

java - 我在哪里存储图像以便可执行 jar 文件可以访问它们?

android - 如何获取Android图库中图像的图像ID?