裁切其实是重新作图,需要引入原图,然后选定区域,用画笔重新画一遍图片。
这个东西,并不是我们理解的真正裁剪下来,实际上程序的操作逻辑是画图。
第一步,取得源图片:
Bitmap srcImg = new Bitmap(@"charas.png");
第二步,自定义想获得的目标图片的大小:
Bitmap bitmap = new Bitmap(50,50);
第三步,把你自定义要的图片加入graphic(画笔) :
Graphics graphic = Graphics.FromImage(bitmap);
第四步,从源图像里面读取特定区域,并输出指定大小的图像:
graphic.DrawImage(srcImg, new Rectangle(0, 0, 50, 50), new Rectangle(52, 0, 50, 50), GraphicsUnit.Pixel);
第五步,保存图像:
bitmap.Save(@"test.png");
最后,释放内存:
bitmap.Dispose();
srcImg.Dispose();
graphic.Dispose();
完整代码:
//先取得源图片
Bitmap srcImg = new Bitmap(@"charas.png");
//自定义你要获得图片size
Bitmap bitmap = new Bitmap(50,50);
//把你自定义要的图片加入graphic
Graphics graphic = Graphics.FromImage(bitmap);
//参数1,原图片实体;参数2,目标图片rect;参数3,原图片rect;参数4,逐像素;
graphic.DrawImage(srcImg, new Rectangle(0, 0, 50, 50), new Rectangle(52, 0, 50, 50), GraphicsUnit.Pixel);
//上面的操作就是从源图片目标(0,0)的位置截取了50*50的图,然后传给了grapic实体里的bitmap
//保存图像
bitmap.Save(@"test3.png");
//现在bitmap是你得到的值
//这里你就看情况释放内存了,graphic倒是可以直接丢掉,两个bitmap如果你还用的话先别dispose
//bitmap.Dispose();
//srcImg.Dispose();
graphic.Dispose();
//我这里再补充一下,bitmap是定义的画布的大小,无论你定义多大,它只会从(0,0)开始画一个50*50的图像在上面
//这才是DrawImage第二个参数的意义
参考来源:
Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).
There is 18h40m53s left until you can comment.