使用MagickNet编辑图片
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。
虽然ImageMahick很强大,但却不提供.Net接口,无法使用C#进行开发。而今天介绍的MagickNet就是ImageMahick的.Net版本,它适用于使用.Net开发的Web应用或者WinForm。MagickNet是迄今为止功能最强大、效果最好的开源组件,可以在Github的项目地址下载源文件自己编译或使用在VS的Nuget中下载的已经编译好的DLL。
需要注意的是在Github上下载的源文件使用VS2010及更低版本是打不开的。VS2010中的Nuget版本过低无法安装需要先升级Nuget。
MagickNet依赖.Net Framework4.0,如果你的项目是2.0必须更改为高版本才能支持。我的项目是基于.Net Framework2.0的,本想将应用程序池的版本升级,却没想到报错定义了重复的system.web.extensions/scripting/scriptResourceHandle,这是因为网站的配置文件web.config和Framework4.0的全局配置(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config)中有相同的配置节点。而注释了这些节点,导致网站的一些功能如用户认证无法正常使用。无奈只好使用2.0支持的低版本。
下面是下载链接:
Magick.NET-Q16-AnyCPU.dll(依赖.Net Framework4.0)
MagickNet.dll (兼容.Net Framework2.0)
两个类库中基本功能都是一样的,但是高版本的功能更强大。由于我的项目比较老,因此下面介绍的是低版本的MagickNet的一些基本操作。
缩略图
using(MagickNet.Image img = new MagickNet.Image(filename))
{
int width = ; //定义宽度
int height = ; //定义高度
img.Resize(new MagickNet.Geometry(width, height)); //调整图片尺寸
img.Write(filepath); //保存图片
}
需要注意的是,虽然调整了尺寸,但得到的缩略图中仍保留了相机曝光时间、光圈值、焦距等exif信息,这使得缩略图也占用了较大的磁盘空间。这就需要将exif信息清除掉。高版本中有一个strike()方法,可以清除所有图片中包含的多余的信息,使图片在保持较高的清晰度下得到更大的压缩比率。由于低版本中没有提供strike()方法,我只好采用.Net中处理图像的方法进行压缩,点击此处查看代码
文字水印
public void AddWordWater(MagickNet.Image img,string word)
{
img.FontPointSize = ;
img.FillColor = new MagickNet.Color(, , );
img.Annotate(word, new MagickNet.Geometry( , , img.Size.Width - , img.Size.Height - ));
}
图片水印
public void AddPictureWater(MagickNet.Image img)
{
int xOffset = ;
int yOffset = ;
using (MagickNet.Image water = new MagickNet.Image(water_filename))
{
//右下角添加
//img.Composite(water, MagickNet.GravityType.SouthEastGravity, MagickNet.CompositeOperator.OverCompositeOp);
//自定义位置添加
img.Composite(water, xOffset, yOffset,MagickNet.CompositeOperator.OverCompositeOp);
}
}
更多的常用操作请参考
使用MagickNet编辑图片的更多相关文章
- 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成
原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...
- Markdown 编辑图片居中
Markdown 编辑图片居中 <center><p></p& ...
- Adobe出品(支持IOS,android,web调用)免费插件编辑图片
<head runat="server"><meta http-equiv="Content-Type" content="text ...
- 利用Canvas编辑图片
使用<canvas>对象在浏览器中把一幅彩色图片变成灰度图片. grayscale.html <!DOCTYPE html> <html lang="en&qu ...
- Could not load file or assembly 'MagickNet.dll'
1 确定项目中bin目录下存在该DLL文件 2 安装 VC++发布组件_缩略图用_x86(1).exe
- MAC上截图,编辑图片与恢复图片
1.Command+shift+3:全屏截图,保存截图到桌面 2.Command+shift+4:鼠标选定区域截图,保存截图到桌面 3.Command+shift+4+Space(空格键):程序窗口截 ...
- OS 获取用户相册。保存图片。编辑图片为圆形
// // ViewController.m // YunPhoto // // Created by qingyun on 3/4/14. // Copyright (c) 2014 qingyun ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...
- 【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能
作者:Dreawer链接:https://zhuanlan.zhihu.com/p/24465742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:梦游的龙猫(转 ...
随机推荐
- 「Mobile Testing Summit China 2017」第三届中国移动互联网测试开发大会-讲师征集
时至北京盛夏,一场由 TesterHome 主办的关于移动互联网测试技术的盛会正在紧锣密鼓的筹备中.只要你关注软件质量,热爱测试,期待学习,都欢迎你加入这次移动测试技术大会中和我们一起分享经验.探讨话 ...
- java.util.concurrent包下并发锁的特点与适用场景
序号 类 备注 核心代码 适用场景 1 synchronized 同步锁 并发锁加在方法级别上,如果是单例class对象,则只能允许一个线程进入public synchronized void doX ...
- python selenium 爬取淘宝
# -*- coding:utf-8 -*- # author : yesehngbao # time:2018/3/29 import re import pymongo from lxml imp ...
- keepalive配置mysql自动故障转移
keepalive配置mysql自动故障转移 原创 2016年02月29日 02:16:52 2640 本文先配置了一个双master环境,互为主从,然后通过Keepalive配置了一个虚拟IP,客户 ...
- spring静态注入
与其说是静态注入(IOC),不如讲是对JavaBean 的静态成员变量进行赋值. 一般我们在使用依赖注入的时候,如果当前对象(javaBean )创建(实例化)一次,那么非静态的成员变量也会实例化一次 ...
- java生成简单验证码图片
概要 最近项目需要用java实现输出随机验证码图片到前台,正好有机会接触下java的绘图类,完成需求后也有时间做个总结,写篇随笔记录下也希望能帮助到有同样需求的人! 需求流程图 1.生成随机数 在ja ...
- 通过SID查找历史执行的SQL语句
这次某系统发生严重的阻塞,但是去查顶级会话,发现已经没有该对应的sql_id了,于是我们只用通过 v$active_session_history 视图来寻找.下面是查找的过程: 1.查找顶层ASH历 ...
- 003.[python学习] 简单抓取豆瓣网电影信息程序
声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和lxml,如需正确运行,请先安装.下面是代码: #!/us ...
- request和response的常用方法
一.request 1.setAttribute()在Request域中存储数据 2.setCharacterEncoding()设置请求参数的编码方式,只对post请求有效 3.getMet ...
- Tomcat(免安装版)的安装与配置【转】
1.下载 到Apache的官方网站,我们可以很容易找到Tomcat的下载地址,如: http://tomcat.apache.org/download-60.cgi 在这里我们可以下载到Tomcat的 ...