林試圖加載由n個圖像n和通過複製每個像素爲m×m的製作在正米乘n米。我的意思是:如果圖像是:C#負載縮放的位圖
1 2
3 4
,m爲2,因此新的圖像將
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
到目前爲止,我只是做了明顯的方式:
Bitmap scaledImage = new Bitmap(image.Width * BeadWidth, image.Height * BeadHeight);
for (int w = 0; w < scaledImage.Width; ++w) {
for (int h = 0; h < scaledImage.Height; ++h) {
scaledImage.SetPixel(w, h, image.GetPixel(w/BeadWidth, h/BeadHeight));
}
}
但它需要很長時間。 我怎樣才能得到同樣的結果在更快的時間?
1.不要做縮放自己時,使用'graphics.DrawImage'爲你縮放圖像,你可以明確地請求最近鄰居插值。 – Dai
2.不要使用'GetPixel'和'SetPixel',他們是緩慢的。相反,使用'LockBits'操作'Bitmap'對象,並將數據複製到'Byte []'數組中(爲了安全起見),或者使用帶安全指針的'unsafe' C#快速迭代 - 在不復制的情況下操作位圖數據。 – Dai