我正在尝试裁剪图片的底部25%,但我得到的是“内存不足”。例外。我从我的代码和研究中的测试中知道,由于我的坐标超出范围,这个异常纯粹被抛出。
我有一个名为bmp的图像,宽度为400像素,高度为250像素。我正在使用以下代码裁剪它......
PixelFormat = bmp.PixelFormat;
Bitmap CroppedImage = bmp.Clone(new System.Drawing.Rectangle(0, 250, 400, 62), bmpFormat);
这给了我:'异常细节:System.OutOfMemoryException:内存不足。'
但是,如果我的代码是写的......
PixelFormat = bmp.PixelFormat;
Bitmap CroppedImage = bmp.Clone(new System.Drawing.Rectangle(0, 0, 400, 62), bmpFormat);
我的图像从左上方向下裁剪(即我得到前25%)对我来说这对我没有任何意义,因为我确实需要将高度设置为-62而不是62来执行此操作。< / p>
如果有人能指出我对此的回答那就太棒了!
答案 0 :(得分:0)
请记住Rectangle
的构造函数中的前两个参数是矩形左上角的坐标。这使得矩形的右上角在(650, 0)
处于第一个示例中的图像400
宽度上。因此例外。
在您的第二个示例中,矩形沿其宽度覆盖原始图像,但其高度仅为62像素 - 因此您只能看到图像的上半部分被裁剪。
另请注意,y
轴的放置方式与经典几何图形不同。这里y
轴指向“向下”。