利用Grahics 进行图片裁剪
这两天做了一个图片对比工具,里面要处理两张大的图片,所以要对图片先进行裁剪最开始用了
/// <summary>
/// 裁剪图片
/// </summary>
/// <param name="imagePath"/>
/// <param name="savePath">"c:\images\"</param>
private List<string> DefClipImage(string imagePath, string savePath)
{
var fileInfo = new FileInfo(imagePath);
if (!fileInfo.Exists)
throw new Exception("图片" + imagePath + "不存在!");
var savePathList = new List<string>();
var spath = savePath + fileInfo.Name.Replace(fileInfo.Extension, string.Empty);
try
{
var bitmap = new Bitmap(imagePath);
var format = bitmap.PixelFormat;
Bitmap cloneBitmap = bitmap.Clone(_cloneRect1, format);
var tempPath = spath + "_1.jpg";
cloneBitmap.Save(tempPath);
savePathList.Add(tempPath);
cloneBitmap.Dispose();
cloneBitmap = bitmap.Clone(_cloneRect2, format);
tempPath = spath + "_2.jpg";
cloneBitmap.Save(tempPath);
savePathList.Add(tempPath);
cloneBitmap.Dispose();
cloneBitmap = bitmap.Clone(_cloneRect3, format);
tempPath = spath + "_3.jpg";
cloneBitmap.Save(tempPath);
savePathList.Add(tempPath);
cloneBitmap.Dispose();
cloneBitmap = bitmap.Clone(_cloneRect4, format);
tempPath = spath + "_4.jpg";
cloneBitmap.Save(tempPath);
savePathList.Add(tempPath);
cloneBitmap.Dispose();
bitmap.Dispose();
return savePathList;
}
catch
{
throw new Exception("图片" + imagePath + "处理失败!");
}
}
但是速度太慢。
后来发现用grahics 会快很多
private void test()
{
Bitmap bitmap = new Bitmap(Application.StartupPath + @"\Image\1.jpg");
var bt = new Bitmap(7500, 3750);
var grahics = Graphics.FromImage(bt);
grahics.DrawImage(bitmap, _cloneRect1, _cloneRect1,GraphicsUnit.Pixel);
bt.Save(Application.StartupPath + "1.jpg");
grahics.DrawImage(bitmap, _cloneRect1, _cloneRect2, GraphicsUnit.Pixel);
bt.Save(Application.StartupPath + "2.jpg");
grahics.DrawImage(bitmap, _cloneRect1, _cloneRect3, GraphicsUnit.Pixel);
bt.Save(Application.StartupPath + "3.jpg");
grahics.DrawImage(bitmap, _cloneRect1, _cloneRect4, GraphicsUnit.Pixel);
bt.Save(Application.StartupPath + "4.jpg");
grahics.Dispose();
bt.Dispose();
}
最后上个做的工具的效果图,采用开源地图控件:)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述