为什么会出现内存不足异常?
所以这在 C# 中第一次通过:
splitBitmaps.Add(neededImage.Clone(rectDimensions, neededImage.PixelFormat));
其中 splitBitmaps 是一个 List
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/