zoukankan      html  css  js  c++  java
  • 利用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();
            }

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

  • 相关阅读:
    Tomcat性能调优
    spring 提供的可扩展的接口和类
    Spring boot 定义exit codes 让你定位问题更加简单
    spring中@Async注解的原理和使用
    SpringCache源码深度解析
    ApplicationContextAware和BeanFactoryAware使用理解
    spring aop中引介拦截器的用法
    提高安全性而在HTTP响应头中可以使用的各种响应头字段
    spring aop中targetSource的理解
    PowerMockito使用PowerMockIgnore注解消除类加载器引入的ClassCastException
  • 原文地址:https://www.cnblogs.com/aoldman/p/3471585.html
Copyright © 2011-2022 走看看