为什么使用ImageMagick
经常会遇到图片的格式转换、裁剪等批量操作,当然有许多软件可以使用,考虑到功能不太全面,且需要多个软件

作为一个程序员使用命令行进行操作应该会更方便点,而且不需要下载其它软件等

这里只需要安装一个ImageMagick即可

ImageMagick是一款免费开源的图片编辑软件。既可以通过命令行使用,也可以通过C/C++、Perl、Java、PHP、Python或Ruby调用库编程来完成。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。

ImageMagick下载地址
https://imagemagick.org/script/download.php#windows

ImageMagick安装方法及使用方法
安装方法:
https://www.cnblogs.com/lfri/p/11601211.html
使用方法:
Anatomy of the Command-line
Examples of ImageMagick Usage

注意的问题:
1.默认安装在c盘,自动配置环境变量,如果想安装到其它盘,需要手动配置环境变量,这里安装到我的D盘

复制D:\Program Files\ImageMagick-7.1.0-Q16-HDRI添加到环境变量path中即可
2.使用方法:可以直接在命令行cd到图片目录下就可以直接进行操作,这里注意现在官网下载的新版版已经是7.0+了,学习官网使用命令时,需要在命令前添加magick:也可以在python代码中运用
例如:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animationfig = plt.figure(figsize=(6, 6))
ax = plt.gca()
ax.grid()
ln1, = ax.plot([], [], '-', lw=2)
ln2, = ax.plot([], [], '-', color='r', lw=2)
theta = np.linspace(0, 2*np.pi, 100)
r_out = 1
r_in = 0.5def init():ax.set_xlim(-2, 2)ax.set_ylim(-2, 2)x_out = [r_out*np.cos(theta[i]) for i in range(len(theta))]y_out = [r_out*np.sin(theta[i]) for i in range(len(theta))]ln1.set_data(x_out, y_out)return ln1,def update(i):x_in = [(r_out-r_in)*np.cos(theta[i])+r_in*np.cos(theta[j]) for j in range(len(theta))]y_in = [(r_out-r_in)*np.sin(theta[i])+r_in*np.sin(theta[j]) for j in range(len(theta))]ln2.set_data(x_in, y_in)return ln2,ani = animation.FuncAnimation(fig, update, range(len(theta)), init_func=init, interval=30)
ani.save('roll.gif', writer='imagemagick', fps=100)plt.show()

运行得到如下,可以保存为.gif格式

常用的命令行操作:
1.图片格式转换
格式:
magicx convert (options) input_image output_image

“convert 也可以去掉”

单个图片

magick convert 1.jpg  2.png

多个图片

magick convert 1.jpg 2.jpg 3.jpg book.png
#或者通过通配符批量处理
magick  convert *.png  b.jpg

2.压缩图片

magick convert -resize 400 b-1.jpg b-3.jpg

3.合并图片

#b-4.jpg是合并的图片
magick convert -append b-1.jpg b-2.jpg b-4.jpg

4.裁剪图片

#从b-1.jpg的(1700,500)为起点,截取宽200像素,长210像素的的区域为b-5.jpg
magick convert  -crop 200x210+1700+500  b-1.jpg  b-5.jpg

5.图片加边框

magick 1.jpg -bordercolor blue -border 5% 2.jpg

6.图片滤镜

#-monochrome没有相关的配置选项;
#但是-charcoal需要设置一个相关因子,1左右能实现类似炭笔绘画的效果
magick convert monochrome .jpg -monochrome monochrome_example.jpg
magick convert charcoal .jpg -charcoal 1.2 charcoal _example.jpg

7.图片上加文字

magick mogrify -font "Microsoft-YaHei-&-Microsoft-YaHei-UI" -pointsize 60 -fill blue -weight bolder -annotate +300+100 "我是一个小可爱" b-3.jpg

magick convert -background lightblue -fill blue -font Candice  -pointsize 72 label:Anthony label.gif

此时运行出现,虽然能显示图片,但是字体由于系统没有,

convert: unable to read font `Candice' @ warning/annotate.c/RenderType/1005.

需要下载字体:地址 到图片目录中,且Candice需要改为Candice.ttf

magick convert -background lightblue -fill blue -font Candice.ttf  -pointsize 72 label:Anthony label.gif

可以得到

写到这里基本操作学的差不多了,现在提供一个更快捷的图片格式批量转换方法
教程
同样首先下载安装ImageMagick,配置环境变量

然后在python编译软件编写代码程序

import os
import subprocessdirectory = '.'
dist_path = os.path.join(directory, '转换后图片')
if not os.path.exists(dist_path):os.makedirs(dist_path)
infile = os.getcwd()
outfile = os.path.join(infile, '转换后图片')
for filename in os.listdir(directory):if filename.lower().endswith(('.bmp', '.dib', '.gif', '.png','.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff', '.heic')):print('Converting %s...' % os.path.join(directory, filename))if '.' in filename:suffix = filename.split('.')[-1]name = filename.replace(('.' + suffix), '')subprocess.run(["magick", "%s" % filename, "%s" % (outfile + '\\' + name + '.jpg')])continue

方法是将编写好的代码(自己根据需要可以更改)利用打包软件进行打包.exe 格式 便于window系统打开,这里需要在项目环境中安装pyinstaller

pip install pyinstaller

最后在编译软件(例如vs code终端,保证激活项目的python环境)输入

pyinstaller -F -i ico.ico img_to_jpg.py

ico.ico设置的程序图标(可以利用自己的图片制作ico) , img_to_jpg.py是编写的代码名字
运行代码之后在项目目录里dist里exe后缀的文件就是所需的程序,将其复制到需要转换图片格式的文件里

每次使用时,你可能需要复制此文件到对应图片目录里,双击即可,相当于自动运行代码

其它问题:
如果遇到pdf转其它格式出错,可以按照以下教程安装ghostscript

windows下安装ghostscript及环境变量设置

利用命令行实现图片转换等操作--ImageMagick相关推荐

  1. Linux 下用命令行修改图片大小

    Linux 下修改图片大小 利用命令行修改图片大小 convert -resize 128x128 picture_name picture1_name

  2. 【Python AsciiArt】利用命令行打印出字符图案

    利用字符串生成工具可以方便的打印出自己想要字符图案,以及如何将图片转换为ASCII ART输出. 最终可以用命令行输出各种彩色图像---->> 一般字符图案 我们在使用一些开源软件的时候, ...

  3. python生成字符图形_【Python AsciiArt】利用命令行打印出字符图案

    利用字符串生成工具可以方便的打印出自己想要字符图案,以及如何将图片转换为ASCII ART输出. 最终可以用命令行输出各种彩色图像---->> 一般字符图案 我们在使用一些开源软件的时候, ...

  4. win10中使用cmd命令行进行切换盘符操作时无反应

    在win10中使用cmd命令行进行切换盘符操作时,碰到无反应的情况: 解决方法: 1.输入路径回车后,再次输入该盘符 2.在cd 与 E:\ 之间加上 /d : 原因: windows命令行切换不同盘 ...

  5. git 修改commit_结合IDEA与命令行,解决常用git操作与特殊情况的最佳实践

    本文适合总觉得git操作不够顺滑,被各种分支问题搞得焦头烂额的Java业务开发同学. 如果是git的初学者,建议搜索下git其他入门教程,这方面资料很多,非常推荐git init一个新项目,然后本地操 ...

  6. EFI 分区/恢复分区不可删除?你需要使用命令行了(配合鼠标操作)

    Windows 系统在安装的时候,会自动为我们的磁盘划分一个恢复分区和一个 EFI 分区.如果后面不打算再用这些分区的时候,却发现无法删除. 本文将提供解决方法. 因为误操作会导致数据丢失,所以我将两 ...

  7. 【实用手记】linux下命令行查看图片

    注:带有[实用手记]标题的文章主要用于临时备忘,内容不甚详尽,但之后也会视需要对相关知识进行完善. linux下使用命令行查看图片: eog picturepath eog,即linux的内置图片查看 ...

  8. windwos利用命令行结束进程, tasklist和taskkill命令

    windwos利用命令行结束进程 tasklist 列出进程 C:\Users\Anita>tasklist映像名称 PID 会话名 会话# 内存使用 ===================== ...

  9. linux 命令行看图片,骚操作:用终端打开图片

    导读 Linux 上有许多 GUI 图片浏览器.但我尚未听说或使用过任何在终端中显示图片的应用程序.幸运的是,我刚刚发现了一个可用于在终端中显示图像的名叫 FIM 的图像查看器.FIM 引起了我的注意 ...

最新文章

  1. alibaba面试题
  2. 简单工厂模式_计算器实现
  3. java实现选择排序
  4. 速来围观MOS管的选择步骤
  5. HDOJ 4883 TIANKENG’s restaurant
  6. 光伏双反闹剧何时休?
  7. 12天学好C语言——记录我的C语言学习之路(Day 12)
  8. 5-5 用TSNE进行数据降维并展示聚类结果
  9. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
  10. android的消息队列机制
  11. 在EditPlus里直接运行PHP
  12. JavaSE JDK搭建
  13. python 手机号码归属地 软件,Python查询手机号码归属地几种方法
  14. Mac 移动硬盘没有推出,再插上不显示移动硬盘解决办法
  15. 小编告诉你关于阿里云商标注册靠不靠普
  16. java if 终止_java中跳出或终止if语句的方法
  17. 用星号打印出一个如图所示的空心菱形
  18. C++设计模式8--装饰模式 Decorator --动态的增减功能
  19. python画风景图_风景侠
  20. 基于角膜反射的学习心得

热门文章

  1. 第一世界的年轻人追求的是房子还是别的?
  2. C#语言实例源码系列-自定义ListBox背景
  3. 自定义MVC原理与框架
  4. 【运维面试】面试官:你觉得网站访问慢的原因有哪些?
  5. 计算机化自适应测验 英语,计算机化自适应测验选题策略研究
  6. 微信小程序语音识别java_微信小程序实现语音识别功能
  7. Doris内置函数Split_part()性能影响分析测试
  8. php 绘制斜线,css怎么绘制斜线
  9. 吴裕雄--天生自然 诗经:声声慢·寻寻觅觅
  10. Win10_11使用VMware等启动虚拟机蓝屏报错等一些列问题解决方案