public void Slice()
{
// 图片路径
var file = "F;/aaa.png";
// 水平切分
int horizontal = ;
// 纵向切分
int vertical = ;
for (int i = ; i < horizontal * vertical; i++)
{
using (Image image = Image.FromFile(file, true))
{
// 每一块的高
int s_h = image.Height / horizontal;
// 每一块的宽
int s_w = image.Width / vertical;
// 整除判断自己加吧,懒得写了 /*
0,0 ; 1,0 ; 2,0 ; 3,0
0,1 ; 1,1 ; 2,1 ; 3,1
0,2 ; 1,2 ; 2,2 ; 3,2
0,3 ; 1,3 ; 2,3 ; 3,3
*/
// 左上角为0,0
var rect = new Rectangle();
rect.X = i % vertical * s_w;
rect.Y = i / horizontal * s_h;
rect.Width = s_w;
rect.Height = s_h;
CutForCustom(image, "xxx"+i+".png", rect);
}
}
} /// <summary>
/// 切图
/// </summary>
/// <param name="image">图源</param>
/// <param name="fileSaveUrl">要保存的文件名</param>
/// <param name="rect">位置大小</param>
public void CutForCustom(Image image, string fileSaveUrl, Rectangle rect)
{
var templateImage = new Bitmap(image);
var bitCrop = templateImage.Clone(rect, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
bitCrop.Save(fileSaveUrl);
bitCrop.Dispose();
templateImage.Dispose();
image.Dispose();
}

具体文件怎么来就随意了。如果切分的块数不能整除也可以,只是会丢失,自己补足一下会更复杂了

05-11 19:26