问题描述
|
我有以下代码:
public static double[][] GetRgbProjections(Bitmap bitmap)
{
var width = bitmap.Width - 1;
var height = bitmap.Height - 1;
var horizontalProjection = new double[width];
var verticalProjection = new double[height];
var bitmapData1 = bitmap.LockBits(new Rectangle(0,bitmap.Width,bitmap.Height),ImageLockMode.ReadOnly,PixelFormat.Format32bppArgb);
有人知道ѭ1是什么意思吗?还有the2ѭ吗?为什么要从每个属性值中减去1?
解决方法
Width
和Height
属性返回的值是互斥的,这意味着坐标(宽度,高度)的像素紧邻位图的边界。
因此,如果要遍历像素,则需要减去一以获得正确的行数或列数。
当然,很难讲得多。您所显示的代码部分不再使用这些值。
,不。我们永远不会知道从位图宽度减去1的目的是什么,因为我们不知道bitmap
的上下文。
,这样做的原因是使数组索引与位图的行和高度值匹配。考虑:
您有一个2x2像素的位图。它总共有4个像素,宽度和高度均为2。如果要对其进行迭代,则需要在两个方向(宽度和高度)上从0迭代到1(包括0和1),但是如果按位图像素进行迭代,则将在1和2之间进行迭代,这将导致索引从界限。
就我个人而言,我不会从width和height变量中减去1,而只是在遍历像素数组以防止混淆时减去。