位图的OutOfMemoryException错误

时间:2015-12-29 20:32:50

标签: c# .net bitmap

当我尝试使用循环将图像的一部分存储到位图时,我得到System.OutOfMemoryException。我不认为这是因为图像太大,因为我的代码的另一个版本使用相同图像的多个但没有位图。这是我得到的:

Bitmap map = new Bitmap(img);

for (int i = 0; i < 4; i++) {
    for (int y = 0; y < 4; y++) {
        // Clone a portion of the Bitmap object.
        Rectangle rec = new Rectangle(i*(img.Width / 4), 
                                    y*(img.Height / 4),
                                    img.Width,//image width
                                    img.Height);

        PixelFormat format =  map.PixelFormat;
        Bitmap clone = null;
        try {
            clone = map.Clone(rec, format);
        } catch (OutOfMemoryException e) 

1 个答案:

答案 0 :(得分:3)

这是因为你的矩形边界不在图像中。

我认为你误解了Rectangle image.Width {@ 1}}它左上角(第一个和第二个参数)以及矩形的宽度和高度。当您在位图内部设置左上角并提供image.HeightOutOfMemoryException作为矩形的宽度和高度时,它肯定会落在位图之外,您将获得@{ Layout = null; var myObject = ViewData["locations"]; var properties = myObject.GetType().GetProperties(); }