0
我想導入照片並檢查每個像素以確定其RGB值,然後將每個像素(或RGB中的等效值)放入數組或類似數據結構中,以保持像素的原始順序。如何分離圖像中的像素並將它們放入C#數組中?
我需要知道的最重要的事情是如何分離像素並確定每個像素值。
我想導入照片並檢查每個像素以確定其RGB值,然後將每個像素(或RGB中的等效值)放入數組或類似數據結構中,以保持像素的原始順序。如何分離圖像中的像素並將它們放入C#數組中?
我需要知道的最重要的事情是如何分離像素並確定每個像素值。
Bitmap img = (Bitmap)Image.FromFile(@"C:\...");
Color[,] pixels = new Color[img.Width, img.Height];
for (int x = 0; x < img.Width; x++)
{
for (int y = 0; y < img.Height; y++)
{
pixels[x, y] = img.GetPixel(x, y);
}
}
的快速版本upvoted答案:
public static int[][] ImageToArray(Bitmap bmp) {
int height = bmp.Height; // Slow properties, read them once
int width = bmp.Width;
var arr = new int[height][];
var data = bmp.LockBits(new Rectangle(0, 0, width, height),
System.Drawing.Imaging.ImageLockMode.ReadOnly,
System.Drawing.Imaging.PixelFormat.Format32bppArgb);
try {
for (int y = 0; y < height; ++y) {
arr[y] = new int[width];
System.Runtime.InteropServices.Marshal.Copy(
(IntPtr)((long)data.Scan0 + (height-1-y) * data.Stride),
arr[y], 0, width);
}
}
finally {
bmp.UnlockBits(data);
}
return arr;
}
使用Color.FromArgb()來映射像素值的顏色。