实际工作时用到的C# 切分图片的代码,可以将一张整图按行和列切分成固定大小的N张小图,索引从第1行开始0..n,再从第2行开始n+1...n+2n,请参考
/// <summary>
/// 按行、列分割原始图片
/// </summary>
/// <param name="rowNum">行数</param>
/// <param name="colNum">列数</param>
/// <param name="srcBitmap">原始图片</param>
/// <returns>切割后的数组</returns>
public static Bitmap[] getImageCut(int rowNum, int colNum, Bitmap srcBitmap)
{
int bitmapNum = rowNum * colNum;//图片数量
Bitmap[] bitmapArr = new Bitmap[bitmapNum];
int perWidth = srcBitmap.Width / colNum; //每个图片宽度
int perHeight = srcBitmap.Height / rowNum;//每个图片高度
int srcImageX = 0;
int srcImageY = 0;
for (int rowIdx = 0; rowIdx < rowNum; rowIdx++)
{
for (int colIdx = 0; colIdx < colNum; colIdx++)
{
int curIdx = rowIdx * colNum + colIdx;
bitmapArr[curIdx] = new Bitmap(perWidth, perHeight);
Graphics newBmpGraphics = Graphics.FromImage(bitmapArr[curIdx]);//新图片
Rectangle destImageRect = new Rectangle(0, 0, perWidth, perHeight);//目标图片
Rectangle srcImageRect = new Rectangle(srcImageX, srcImageY, perWidth, perHeight);//原始图片
newBmpGraphics.DrawImage(srcBitmap, destImageRect, srcImageRect, GraphicsUnit.Pixel);
srcImageX += perWidth;
}
srcImageY += perHeight;
srcImageX = 0;
}
return bitmapArr;
}