ふらっとC#,C♯,C#(初心者用) Part68

このエントリーをはてなブックマークに追加
32777
↓が遅くて泣きそうです。
  C#だけ使って、もっと速くする方法を教えてください
int[] pixel = img.GetPixel();
Bitmap bmp = new Bitmap(img.Width/*=2560*/, img.Height/*=2560*/, PixelFormat.Format32bppArgb);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
fixed (int* p1 = pixel) {
int* p = (int*)bd.Scan0;
int nResidual = bd.Stride - bmp.Width * 4;
int* d1 = (int*)p1;
int x, y, w = bmp.Width, h = bmp.Height;
int min = 0, max = 512;
int colorMax = colorTable.Length - 1;
int val = 0;
for (y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
val = (int)*d1++;
if (val < min) {
*p++ = colorTable[0];
}
else if (max < val) {
*p++ = colorTable[colorMax];
}
else {
*p++ = colorTable[val];
}
}
p += nResidual;
}
}