• 利用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 + @"Image1.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();
            }

    最后上个做的工具的效果图,采用开源地图控件:)

  • 相关阅读:
    VSS使用
    Delphi简单数据库连接程序
    为表增加字段与拷贝数据到另一个表
    VSTS 使用
    Delphi实现个相似的功能界面共用一个窗体
    看代码笔记
    数据库安全管理
    函数
    【USACO】Ordered Fractions 顺序的分数
    C# 专业数据库连接配置界面
  • 原文地址:https://www.cnblogs.com/aoldman/p/3471585.html
Copyright © 2020-2023  润新知