之前用python操作magick,写过几个帖子,当时操作得还行,最近需要做一些工作,发现python下非常难操作,当然和我水平有关
pythonmagick其实就是c++库得移植
本次操作涉及到了dpi,之前没操作过,查询了资料
是用density来操作,再python下各种报错,大致意思就是参数格式不对,要什么magick::point格式
代码和报错如下,网上找了一圈,也没找到(如果有大神能指点下这个参数怎么写,那是非常感谢)
只能作罢,转向c#看看

之前就知道magick有c#得封装,叫magick.net
新建了一个项目,测试下来效果非常不错,比python下好用多了
//导入库
using ImageMagick;
//读取图片
var image = new MagickImage(@"D: 01.jpg");
//设置dpi
image.Density = new Density(300.00, 300.00);
//修改图片尺寸(锁定比例,尺寸不一定是设置得尺寸)
image.Resize(new MagickGeometry(310, 430));
//修改图片尺寸(不锁定比例,图片会拉伸或压扁)
image.Resize(new MagickGeometry("310x430!"));
//设置颜色空间为cmyk(这个python下面得费一番功夫)
image.ColorSpace = ColorSpace.CMYK;
//图片合并(bac为背景,image放置再x231,y219处)
var bac = new MagickImage(@"D:ac.jpg");
bac.Composite(image, 231, 219);
//图片保存
image.Write(@"D: 02.jpg");
//清理图片对象
image.Dispose();
//书写文字(注意书写文字要指定字体文件,这样才能书写中文,否则中文一律不显示)
new Drawables()
// Draw text on the image
.FontPointSize(50)//字体大小
.Font(@"D:msyh.ttc")//字体文件
.FillColor(new MagickColor("#519669"))//字体颜色
.TextKerning(10.00)//间距
.Text(312, 710,"你好")/文字位置,内容
.Draw(bac);
可以看出操作还是很简单得,上面得文字书写暗坑,如果font不设置文件,那就不能写中文,这里要多加小心
这样基本就完成了
c#用的不是很多,不过写起来倒是不难,稍微花了点时间,就能上手,相比pythonmagick,文档已经资料还是比较丰富的