利用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();
}
最后上个做的工具的效果图,采用开源地图控件:)
利用Grahics 进行图片裁剪的更多相关文章
- node.js平台下,cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
- cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
- 原生 JavaScript 图片裁剪效果
图片裁剪程序效果如下,可鼠标操作. 拖动左边小方框时在右侧实时显示对应的裁剪图片,同时左侧的拖动框里图片完全显示,拖动框外部图片模糊显示.8个控制点可以对显示区域大小进行控制. HTML 和 CS ...
- struts2+jsp+jquery+Jcrop实现图片裁剪并上传
<1> 使用html标签上传需要裁剪的大图. <2> 在页面呈现大图,使用Jcrop(Jquery)对大图进行裁剪,并且可以进行预览. <3> 选择好截取部分之后发 ...
- 使用canvas进行图片裁剪简单功能
1.html部分 使用一个input[type="file"]进行图片上传: canvas进行图片的裁剪展示 <div> <input type="fi ...
- 好用的开源库(二)——uCrop 图片裁剪
最近想要实现图片裁剪的功能,在Github上找到了这个uCrop,star的人挺多的,便是决定入坑,结果长达一个小时的看资料+摸索,终于是在项目中实现了图片裁剪的功能,今天便是来介绍一下uCrop的使 ...
- cropper.js图片裁剪
最近做电子名片的项目,可是个人照片展示上出现了 用户上传的图片尺寸严重失调,所以要求进行图片裁剪,再此我对图片裁剪进行调研 还不太成熟 以后再改 这个实现的原理是 前台获取到 坐标 图片的尺寸 原图文 ...
- java图片裁剪和java生成缩略图
一.缩略图 在浏览相冊的时候.可能须要生成相应的缩略图. 直接上代码: public class ImageUtil { private Logger log = LoggerFactory.getL ...
- H5移动端图片裁剪(base64)
在移动端开发的过程中,或许会遇到对图片裁剪的问题.当然遇到问题问题,不管你想什么方法都是要进行解决的,哪怕是丑点,难看点,都得去解决掉. 图片裁剪的jquery插件有很多,我也测试过很多,不过大多数都 ...
随机推荐
- android 微信 SDK 分享
1.资源依赖: https://open.weixin.qq.com/cgi-bin/showdocument?action=doc&id=open1419319167&t=0.613 ...
- openerp学习笔记 日期时间相关操作
日期格式化字符串:DATE_FORMAT = "%Y-%m-%d" 日期时间格式字符串:DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" ...
- (转)Linux-HA实战(1)— Heartbeat安装
原文:http://blog.csdn.net/liaomin416100569/article/details/76087448-------centos7源代码编译安装heartbeat 原文:h ...
- Fiddler使用二(Fiddler抓取HTTP请求)
参考:http://blog.csdn.net/ohmygirl/article/details/17849983 Fiddler使用一中已经介绍了Fiddler的原理和软件界面.本文主要针对Fidd ...
- Junit处理异常
当一个被测类中有异常时,如何处理? 如:一个原始的被测类; public class UserExceptionDemo { public int age; public String name; p ...
- MyBatis Mapper XML 文件 的学习详解
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...
- TSM简介
转自:https://www.cnblogs.com/Study-Blog/p/8644376.html Tivoli TSM产品功能详述Tivoli TSM(Tivoli Storage Manag ...
- HttpContext在多线程异步调用中的使用方案
1.在线程调用中,有时候会碰到操作文件之类的功能.对于开发人员来说,他们并不知道网站会被部署在服务器的那个角落里面,因此根本无法确定真实的物理路径(当然可以使用配置文件来配置物理路径),他们唯一知道的 ...
- css常用左右布局方案整理
实际项目开发过程中我们经常会遇到页面div左右布局的需求:左侧 div 固定宽度,右侧 div 自适应宽度,填充满剩余页面,下面整理几种常用的方案 1 左侧 div 设置 float 属性为 le ...
- Navicat 连接MySQL 8.0.11 出现2059错误
错误 使用Navicat Premium 连接MySQL时出现如下错误: 原因 mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是cach ...