这两天做了一个图片对比工具,里面要处理两张大的图片,所以要对图片先进行裁剪最开始用了

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

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

利用Grahics 进行图片裁剪的更多相关文章

  1. node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。

    一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...

  2. cropper.js实现图片裁剪预览并转换为base64发送至服务端。

    一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...

  3. 原生 JavaScript 图片裁剪效果

    图片裁剪程序效果如下,可鼠标操作.   拖动左边小方框时在右侧实时显示对应的裁剪图片,同时左侧的拖动框里图片完全显示,拖动框外部图片模糊显示.8个控制点可以对显示区域大小进行控制. HTML 和 CS ...

  4. struts2+jsp+jquery+Jcrop实现图片裁剪并上传

    <1> 使用html标签上传需要裁剪的大图. <2> 在页面呈现大图,使用Jcrop(Jquery)对大图进行裁剪,并且可以进行预览. <3> 选择好截取部分之后发 ...

  5. 使用canvas进行图片裁剪简单功能

    1.html部分 使用一个input[type="file"]进行图片上传: canvas进行图片的裁剪展示 <div> <input type="fi ...

  6. 好用的开源库(二)——uCrop 图片裁剪

    最近想要实现图片裁剪的功能,在Github上找到了这个uCrop,star的人挺多的,便是决定入坑,结果长达一个小时的看资料+摸索,终于是在项目中实现了图片裁剪的功能,今天便是来介绍一下uCrop的使 ...

  7. cropper.js图片裁剪

    最近做电子名片的项目,可是个人照片展示上出现了 用户上传的图片尺寸严重失调,所以要求进行图片裁剪,再此我对图片裁剪进行调研 还不太成熟 以后再改 这个实现的原理是 前台获取到 坐标 图片的尺寸 原图文 ...

  8. java图片裁剪和java生成缩略图

    一.缩略图 在浏览相冊的时候.可能须要生成相应的缩略图. 直接上代码: public class ImageUtil { private Logger log = LoggerFactory.getL ...

  9. H5移动端图片裁剪(base64)

    在移动端开发的过程中,或许会遇到对图片裁剪的问题.当然遇到问题问题,不管你想什么方法都是要进行解决的,哪怕是丑点,难看点,都得去解决掉. 图片裁剪的jquery插件有很多,我也测试过很多,不过大多数都 ...

随机推荐

  1. Q844 比较含退格的字符串

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  2. Oracle 常用语句备份

    1.oracle 11g 用户名和密码默认区分大小写,可更改alter system set sec_case_sensitive_logon=false 设置改为不区分大小写. 2.授权创建视图:G ...

  3. 初学 spring

    1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/

  4. win 10安装应用程序提示Error 1317的解决方法

    打开windows防火墙 关闭文件夹权限访问保护

  5. Linux使用日志

    Linux使用日志 ----------------------------------------------------------------------------- SecureCRTPor ...

  6. PL/SQL 游标

    本随笔不是原创,只是学习笔记,用于加深记忆,原创地址PL/SQL --> 游标 一.游标的相关概念和特性 1.定义: 映射到结果集中的某一行的特定位置,类似与C语言中的指针.即通过游标方式定位到 ...

  7. window下,nodejs 安装 http-server,开启命令行HTTP服务器

    第一步:http://nodejs.cn/  官网下载安装文件,安装nodejs: 第二步:运行中输入cmd进入命令行模式,输入  node -v ,显示版本号,代表安装成功: 第三步:在node命令 ...

  8. Android开发环境搭建步骤-【Android】

    本教程是android开发环境在windows下的安装配置,经本人测试完全正确无误.这个教程是史上最详细的android开发环境搭建教程. 工具/原料 Eclipse 3.7.0.Java Jdk6. ...

  9. c++ 网络编程(二) linux 下多进程socket通信 多个客户端与单个服务端交互代码实现回声服务器

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9612820.html 锲子-- 预备知识优雅的关闭套接字连接: 基于TCP的半关闭 TCP中的 ...

  10. HTTP 状态代码之汇总+理解

    这里有百度百科的介绍,还挺全的. 下面是在开发过程中遇到过的各种码,自己的问题自己的原因,同码不同错,贱笑贱笑. HTTP 406 Not Acceptable 这个错误的原因,是由于框架使用了`Sp ...