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();
            }

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

  • 相关阅读:
    GzipOutputStream及GzipInputStream的用法
    java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
    HttpClient对URL编码的处理方式解惑!
    使用tmpfs缓存文件提高性能
    eclipse attach source code support folder zip & jar format
    HTTP头部详解及使用Java套接字处理HTTP请求
    curl使用总结
    cURL: win64sslsspi from Mirrors 64bit win7 version
    httpclient解析gzip网页
    使用Gzip加速网页的传输
  • 原文地址:https://www.cnblogs.com/aoldman/p/3471585.html
Copyright © 2011-2022 走看看