ImageMagick是一款开源的计算机图像编辑软件,支持多平台,完全免费使用,可以执行图像转换、裁剪、特效等各种功能。
边肖精选:开源软件
Robo3t下载功能强大的数据库管理软件,可以帮助用户管理数据库内容管理和数据库代码编辑
OpenERP是用Python语言开发的,可以安装在客户端开发环境中,用EPR开发所需的大部分模块构建。
KeeWeb最方便的地方是它提供了一个开源的在线客户端,这意味着你可以自己构建一个
UDig拥有完整的分层开源GIS,还可以使用GRASS进行复杂的矢量运算
view UI基于一套在Vue.js下开发的开源UI组件,可以帮助用户快速构建网页
1.格式转换:从一种格式到图像再到另一种格式(例如,PNG到JPEG)
2.变换:缩放、旋转、裁剪、翻转或修剪图像
3.透明度:使图像的一部分透明
4.附加:向图像添加形状或框架
5.装饰:添加边框或框架图像
6.特效:模糊、锐化、阈值或彩色图像动画:从GIF 7创建一系列动画图像。文本和注释:在描述或艺术图像中插入文本
8.图像识别:描述格式和图像性能
9.合成:重叠一幅又一幅图像
10.蒙太奇:在图像画布上并置图像缩略图
11.胶片支持:读写图像常用的数字胶片工作模式
12.图像计算器:应用数学表达式的图像或图像通道
13.离散傅里叶变换:实现正反向离散傅里叶变换
14.高动态范围图像:精确显示从最亮的直射阳光到最深最暗的阴影的宽强度等级,找到真实的幕后
15.加密或解密图片:将其转换为乱码图像,然后返回普通图像
16.虚拟像素支持:促进其他区域的图像像素
17.大图像支持:读取、处理或写入mebi和Gibby像素的图像大小
18.执行:ImageMagick是线程安全的,利用内部算法OpenMP的功能以及快速双核和四核处理器技术提供窗口优势
19.异构分布式处理:一些算法可以提高跨CPU、GPU等处理器组成的平台的执行速度
Imagemagick非常强大。除了后面要讲的命令行操作模式,它还有很多编程接口可以使用,其中支持C、java等语言,因为涉及的编程类型太多了。下面是一个以C接口为例的教程。
ImageMagick的c接口名为Magick,Magick中有几个重要的对象:
图像:图像对象,Magick中最重要的对象;
几何:几何包含图片长度等信息;宽度和偏移量。
像素:图片的像素对象
颜色:图片的颜色对象
Blob:二进制数据的大型对象容器
代码示例:
#包括Magick。h
#包含iostream
使用命名空间标准;
使用命名空间Magick
int main(int argc,char **argv)
{
InitializeMagick(* argv);
图像图像;
尝试{
//读入图像文件并将其存储在图像对象中
image . read(' src . jpg ');
//将图片缩放到100x100的大小
图像.调整大小(几何(100,100));
//将缩放的图片保存到文件中
image . write(' dest . jpg ');
}
捕获(异常错误_)
{
cout“捕获到异常:”错误_。what()endl;
返回1;
}
返回0;
}
操作详情:
从上面的例子可以看出,Magick的使用非常简单,只有一个头文件,Magick。h,并且它的所有API和对象都放在Magick的命名空间中。
唯一需要注意的是:
当错误发生时,Magick会抛出一个异常,因此请尝试使用try catch块来捕获异常,必须记住这一点。
注意事项:
另外,编译时需要-I/usr/local/include/imagemagick、-L/usr/local/lib、- lMagickCore -lm -lgomp -lpthread,这是所有学c语言的人都懂的,这里不再赘述。
因为ImageMagick软件的核心用法是使用命令行进行操作,所以对于这个软件的用户来说,了解完整的命令集是非常重要的。为了帮助大家快速入门,我们将在下面详细讲解相关说明。
基本说明:
Convert转换图像格式和大小,模糊,剪切,去除污点,抖动,接近,在图片上绘制图片,添加新图片,生成缩略图等。
标识描述一个或多个图像文件的格式和特征。
复合基于图片或图片组合生成图片
举个例子:
转换配置文件“*[src]{ file }”。{ ext }-quality 80-调整'280x140^'的大小-重心-裁剪280 x140 0 0 repage[out]{ file } _ 280 x140。{ext}
按照80的质量(jpg的压缩参数)解压一张图片,同时按照图片比例缩放成不超过280x140的图片。中间切280x140,切完后去掉图片的空白和exif信息。通常,该指令是为了确保图片大小正好是280x140。
高级命令:
-画质画质,jpg默认99,png默认75
-调整大小
100x100的高宽比保持最高值,高宽比不变
100x100^的长宽比保持最低值,宽高比保持不变
100x100!强制转换宽度和高度,忽略宽高比
100x100当图片的长度或宽度超过指定尺寸时,更改长度和宽度
100x100仅当图片长度和宽度超过指定尺寸时,才更改长度和宽度
当图片的长度或宽度超过指定尺寸时,通过100x100^更改长度和宽度。将高度和宽度比率保持为最低值
只有当图片的长度和宽度超过指定的尺寸时,100x100^才能更改长度和宽度。将高度和宽度比率保持为最低值
100根据指定的宽度比例,保持宽高比
X100根据指定的高度缩放,保持纵横比
-重力西北、北、东北、西、中、东、西南、南、东南的定位命令,用于定位图中截取区域的方位
-裁剪200x200 0 0截取命令,使用定位命令后,根据后两位的偏移值偏移截取范围左上角的像素,然后根据前两位的值从左上角截取对应大小的图片。
重排版删除图片剪切后的空白
-solve30设置组合图片的透明度。溶解示例
/-配置文件*删除/添加图片的现有信息
有时,用户需要使用ImageMagick来批量处理文件,比如如下题所述批量将数千个SVG转换成图像格式,这只是ImageMagick的一个基本操作。想知道具体操作的用户,要快速查看问答内容。
问题描述:
我在文件夹和子文件夹中有数千个SVG。我想要的是将所有这些批次转换成jpg或png图像。
有人可以帮我写一个ImageMagick(windows)命令,可以找到所有的svg并转换成原始名称保存在同一个jpg/png目录下?
下面是一个示例结构:
c:\ \ \ \ SVG \ BuSINESS . SVG
C:\ SVG\Models \ Home.svg
C:\ SVG \下划线\下划线. SVG
转换后,我想要这个:
c:\ SVG \ BuSINESS . SVG
c:\ SVgg \ BusinessMan.jpg
C:\ SVG \ Model #\\Home.svg
C: \ SVG\Models\Home.jpg
C:\ SVG \下划线\下划线. SVG
C:\ SVG \下划线\下划线. jpg
/code
解决方法:
尝试使用FOR循环根文件夹中的应收标签:
对于(*)中的/r% a。svg)进行转换“% ~ a”% ~ dpna。jpg '
该命令将转换所有。启动命令的根文件夹下的子目录中的svg文件。
上述命令适用于命令行。如果您计划在批处理文件中使用此命令(。bat),请记住使用%%而不是%:
For/r%% a in (*。SVG)进行转换“% % ~ a”% % ~ dpna . jpg”
动画效果:
$ convert-延迟0 *。bmp -loop 0动画. gif
//将当前目录下的所有bmp文件合成一个gif图片动画,每帧间隔0ms,重复播放。
//-延迟n延迟n * 10ms
//-loop n打n回合,0表示重复打。
$ convert-延迟50 frame 1 . gif frame 1 . gif frame 1 . gif-loop 0 animated . gif
//将当前目录下的frame1.gif文件制作成animated.gif动画,其中三个frame1.gif文件循环播放,延时500ms。
$ convert-延迟50帧1 . gif-延迟100帧1 . gif-延迟150帧1 . gif-循环0-暂停200动画. gif
//播放一轮后暂停200毫秒,然后进行下一轮播放。
$ convert anim 1 . gif anim 2 . gif combined . gif
//将两个动画文件合并为一个。
附件:
$ mogrify-调整大小640x480 *。使用jpeg文件交换格式存储的编码图像文件扩展名
//将当前目录中的所有jpg文件降低到640x480分辨率
原图:img1.jpg,图片尺寸:1920x1200
裁剪参数可以将一幅图像分割成几幅大小相同的图片,也可以截取大图像上的一幅图片。使用示例如下:
# magick img1.jpg-作物500 x500 dest.jpg
因为原图尺寸是1920x1200,所以可以分12张。请注意,如果大小不是目标图片的整数倍,右边缘和下边缘的一些图片将使用实际大小
在原始图像上剪下指定大小的小图片
麦琪img1.jpg-作物600 x450 300 600 dest.jpg
600x450是宽度乘以高度,300 600是水平和垂直坐标
如果切割尺寸大于实际值,以实际值为准。
马奇克img1.jpg-重心-作物100 X100 0 0 dest1.jpg
获取img1.jpg中部的100x100图片
马奇克img1.jpg-重力东南-作物100 X100 10 5 dest2.jpg
获取一张大小为100x100的图片,在img1.jpg,它距离右侧10像素,距离底部5像素