图片处理命令行工具ImageMagick介绍

2023-11-10

最近在做百度OCR图片文字识别时,因为免费版OCR接口调用次数有限,就想把多张图片合并成一张进行文字识别。这就需要在代码中进行图片合并操作,在查找图片批量合并方案时,看到了linux的convert命令,可以将多张图片合并,且使用特别方便,纪录一下convert是如何使用的。

convert命令属于ImageMagick工具包,具有图片创建、编辑,转换图像格式,以及调整图像大小、模糊、裁切、除去杂点、抖动 、绘图、翻转、合并、重新采样等功能。

要想使用covert命令,首先要安装ImageMagick包。

ImageMagick包介绍

ImageMagick是一款创建、编辑、合成,转换图像的命令行工具,支持格式超过 200 种,包括常见的 PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, SVG 等。功能包括调整大小,翻转,镜像,旋转,扭曲,修剪和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本,线条,多边形,椭圆和贝塞尔曲线等。对于图片的处理,ImageMagick基本可以实现任何常用操作。

官网:https://imagemagick.org/
中文镜像站: http://www.imagemagick.com.cn/index.html

安装


ImageMagick支持Linux, Windows, Mac OS X, iOS, Android OS 等平台。
安装参考文档地址:https://www.imagemagick.org/script/download.php


我以mac为例,安装方式如下:

brew install imagemagick


安装ImageMagick工具包后,即可使用其工具命令。

基本命令

ImageMagick 包括一组命令行工具来操作图片,安装好 ImageMagick 后,终端就可以使用如下命令了。


magick: 创建、编辑图像,转换图像格式,以及调整图像大小、模糊、裁切、除去杂点、抖动 ( dither )、绘图、 翻转、合并、重新采样等。


convert: 等同于 magick 命令。


identify: 输出一个或多个图像文件的格式和特征信息,如分辨率、大小、尺寸、色彩空间等。


mogrify: 与 magick 功能一样,不过不需要指定输出文件,自动覆盖原始图像文件。


composite: 将一个图片或多个图片组合成新图片。


montage: 组合多个独立的图像来创建合成图像。每个图像都可以用边框,透明度等特性进行装饰。


compare: 从数学和视觉角度比较源图像与重建图像之间的差异。


display: 在任何 X server 上显示一个图像或图像序列。


animate: 在任何 X server 上显示图像序列。


import: 保存 X server 上的任何可见窗口并把它作为图像文件输出。可以捕捉单个窗口,整个屏幕或屏幕的任意 矩形部分。


conjure: 解释并执行 MSL ( Magick Scripting Language ) 写的脚本。


stream: 一个轻量级工具,用于将图像或部分图像的一个或多个像素组件流式传输到存储设备。在处理大图像或 原始像素组件时很有用。


各个命令具体介绍,参考地址: https://imagemagick.org/script/command-line-tools.php

命令使用格式


基本命令的使用,遵循 Unix 风格的标准格式:

command [options] input_image output_image

比如我们将一张宽高 300x300 的图片 goods.png 转换成 200x200 的goods.jpg,可以这样用

convert -resize 200x200 goods.png goods.jpg

-resize 定义图片尺寸,ImageMagick 所有的选项参数都在这个【命令行选项手册】。

图片合并实例


接下来介绍我在OCR文字识别中将多张图片合并一张方法,代码合并使用convert命令,如我有图片1.jpg、2.jpg、3.jpg,我想将这三张图片合并成1张并命名为a.jpg,命令如下:

convert -append 1.jpg 2.jpg 3.jpg a.jpg

Python代码:

import os

imgDir = ''

pathDir = sorted(filter(is_img, os.listdir(imgDir)))

 # 通过拼接convert命令,进行图片合并
tmp = 0
shell = 'convert -append '
for imgName in pathDir
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片处理命令行工具ImageMagick介绍 的相关文章

  • 为什么 imagemagick 中的 PNG 图像的 readimage 和 writeimage 需要花费大量时间?

    我正在使用 Imagemagick 版本 7 0 5 4 来执行图像处理操作 例如裁剪 调整大小等去图形 https github com gographics imagick图书馆 我还管理一个魔法棒对象池 Features Cipher
  • 如何使用imagick的writeImage()函数?

    如果我将脚本保存在与正在操作的图像相同的目录中 则此方法有效 并且结果图像 foo jpg 也在同一位置生成 但是 如果脚本位于一个位置 而我希望使用的图像位于另一个位置 而我希望保存缩略图的位置位于其他位置 那么如何指定这些路径呢 做这样
  • ImageMagick 不再在 AWS Lambda 中转换 pdf

    过去 18 个月里 我在 S3 对象上运行了一个 AWS Lambda 函数 大约一个月前 它在一次小更新后失效了 我已恢复它 但它仍然损坏 我研究过使用 ImageMagick 进行最基本的 pdf 转换 但没有成功 所以我认为 AWS
  • 如何在 Windows 上使用 ImageMagick 命令行?

    我的目标是确定我拥有的 jpeg 图像的压缩参数 据我了解这个答案 https stackoverflow com questions 2024947 is it possible to tell the quality level of
  • 仅当宽度超过 Graphics/Image Magick 时如何调整图像大小

    正如这里所见 http www imagemagick org Usage resize shrink http www imagemagick org Usage resize shrink选项 resize 64x64 gt 仅当宽度和
  • imagemagick:创建一个 .png 文件,它只是一个实心矩形

    我想创建一个纯色的 png 文件 使用 ImageMagick 一定很容易做到这一点 但我无法找出问题所在 C tmp gt convert size 8x16 stroke black fill black draw rectangle
  • 使用Imagemagick,如何裁剪白色背景?

    假设我有一个充满标志的目录 大约 200 个 每个标志都有这个边框 上下 12 像素 左右 1 像素 像这样 我如何使用 imagemagick 来 将每个 PNG 图像从 64x64 裁剪到 60x40 你有自动裁剪 mogrify tr
  • Mac Lion 上架构 x86_64 ImageMagick 的未定义符号

    在 Mac Lion 上 我完成了配置 制作并安装了 ImageMagick 的静态版本 一切顺利 作为配置的结果 我得到了 configuring ImageMagick 6 7 2 4 checking build system typ
  • 意象。将颜色更改为透明

    我想更改此图像的黑色边框 http dev loungeup net im http dev loungeup net im 使用 PHP 中的 Imagick 实现透明 结果图像应该具有可见的灰色边框 灰色边框内的图像可见 灰色边框之外的
  • 如何检查png文件是否是减压炸弹

    我正在尝试将图像上传到网站 我发现在允许上传时可能会发生这些减压炸弹攻击png文件 和其他一些 由于我要更改上传的图像 我想确保我不会成为这次攻击的受害者 因此 当涉及到检查是否png文件是一个炸弹 我可以读取文件的标题并确保宽度和高度不超
  • 使用 xlib 将图像加载到窗口上

    我已经创建了窗口类 我想插入图像作为该窗口的背景 文件格式必须为 png 我使用magick 的XImage来加载图像 但不知道如何将其作为我的窗口的背景 知道怎么做吗 使用创建像素图 Pixmap XCreatePixmap displa
  • 将 pdf 图像转换为 jpg 图像的最快方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试将多个 pdf 10k 转换为 jpg 图像并从中提取文本 我目前正在使用pdf2imagepython 库 但它相当慢 有没有比这更
  • Linux 上的 Imagemagick 将 EMF 转换为 PNG

    我尝试在 Red Hat Enterprise Linux Server 5 5 Tikanga 上使用 Imagemagick 将 EMF 格式的图像转换为 PNG 但遇到以下错误 转换 此图像格式 thumbnail emf 没有解码委
  • 图像魔法叠加图像

    我有两个图像 一个是叠加图像 比如说具有透明度的图像 A 另一个是图像 B 我必须将叠加图像 A 放在图像 B 上 以便通过图像 A 的透明部分可以看到图像 B 的某些部分 我还必须根据一些参数移动图像B 我怎样才能用image magic
  • 使用 ImageMagick/convert 创建半透明 PNG

    我有 PNG 文件 我想将整个图像转换为半透明 该图像将在 KML 文件中引用为 Google 地球 地图中使用的图标叠加层 使用 ImageMagick 向我建议了以下示例convert命令 但似乎都不起作用 第一个示例会导致错误 usr
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • 除了标准/渐进之外,第三种JPEG压缩:按通道加载?

    这个问题可能是一个 开放式问题 你们中的许多人可能渴望结束它 但请不要这样做 让我解释 众所周知 JPEG有两种压缩方式 至少在Photoshop保存对话框中 优化 图像加载有点像逐行加载 渐进式 图像首先像马赛克一样加载 逐渐更好 直到原
  • 使用 Imagick 动态图像创建/Apache 标头

    在将现有的稳定网站转移到新服务器时 我遇到了一些使用 Imagick 动态创建图像的代码的间歇性问题 该代码解析 GET 查询 例如 example com image php ipid 750123 r 0 w 750 h 1000 然后
  • 使用 librsvg / rsvg 通过 ImageMagick 转换 SVG 图像

    我知道这个问题在这里有几个答案版本 如下所示 ImageMagick 将 SVG 转换为 PNG 无法在启用 RSVG 的情况下工作 https stackoverflow com questions 11592085 imagemagic

随机推荐

  • python引用文件的方法_Python引用(import)文件夹下的py文件的方法

    Python引用 import 文件夹下的py文件的方法 发布于 2014 08 31 22 14 11 141 次阅读 评论 0 来源 网友投递 Python编程语言Python 是一种面向对象 解释型计算机程序设计语言 由Guido v
  • Qt项目中,自定义数据类型的创建及使用方式

    总第25篇 在Qt的项目开发过程中 特别是在制作一些特殊界面时 通常框架中自带的数据类型难已满足具体的要求 这时就需要开发者自己创建新的数据类型来扩展或替换原有的数据类型 本文将详细介绍自定义数据类型的方法以及如何将其集成到Qt对象模型中
  • 让对方qq崩溃的代码2020_解决 KUbuntu 18.04 下 Deepin Wine QQ 运行十分钟后崩溃的问题...

    环境 KUbuntu 18 04 通过 https github com wszqkzqk deepin wine ubuntu 中的 kde install sh 脚本安装 deepin wine 然后根据对应链接安装了 QQ 现象 安装
  • 切换慢镜头tween.js的使用

    普通镜头切换 设置相机位置和观察方向即可 camera position set aim x aim y 2 aim z 4 camera lookAt设置与OrbitControls冲突需要设置controls target camera
  • JMeter测试HBase

    在网上找了关于jmeter连接hbase的方式 主要分为两种 通过导入jar包连接 Java Request 和通过BeanShell远程连接 由于刚接触jmeter没多久 对BeanShell还不熟 所以打算通过eclipse用Java编
  • Matlab常用操作--删除字符串中任意字符、矩阵之间转换、常见取整函数、矩阵生成CSV文件、strcat函数

    Matlab常用操作 1 MATLAB删除字符串中任意字符 2 MATLAB 一二三维矩阵之间转换 3 MATLAB常见取整函数 4 MATLAB 将矩阵生成CSV文件 5 Matlab字符串连接加空格 strcat函数 6 将矩阵保存到t
  • javaScript的Math数学对象 --用法大全

    Math是 JavaScript 的原生对象 提供各种数学功能 该对象不是构造函数 不能生成实例 所有的属性和方法都必须在Math对象上调用 简而言之就如同java的静态类一样 都是通过类名 方法名 调用的 Math对象的用法大致可以分为
  • 【Sqli-Labs-Master】Less-5 (报错注入)

    Less5 单引号的注入 id 1 报错 id 1 23 尝试闭合 成功回显 看到这个报错信息 基本就行布尔型盲注 报错型注入 时间延迟型盲注 UNION联合查询型注入应该是不能用了 查看源代码 sql SELECT FROM users
  • samba Error NT_STATUS_CONNECTION_REFUSED Failed to connect with SMB1 -- no workgroup available

    连接同事的共享服务时报错 smbclient L ip U user WARNING The syslog option is deprecated Enter WORKGROUP administrator s password Shar
  • invalid stream header问题的解决

    今天调试一个http接口 调用端代码如下 URL url new URL http www AAA com HttpURLConnection connection HttpURLConnection url openConnection
  • Collections.sort方法对list排序的两种方式

    Collections sort 分为两部分 一部分为排序规则 一部分为排序算法 规则用来判断对象 算法则考虑如何进行排序 对于自定义对象 sort 不知道规则 所以无法比较 这种情况下一定要定义排序规则 方式有两种 第一种 java la
  • Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别

    一 RAID 是什么 RAID Redundant Array of Independent Disks 即独立磁盘冗余阵列 简称为 磁盘阵列 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统 从而实现比单块磁盘更好的存储性能和更高的
  • 浏览器的渲染原理

    引言 在我们的日常生活中 互联网已经不可或缺 而游览器 就像是我们浏览这个数字世界的窗口 成为我们与互联网交流的必备工具 有时候 你是否被一些页面无法正确显示 或者响应缓慢等情况困扰过 这就需要我们理解浏览器的 大脑 内核 及其如何将代码渲
  • 机器学习识别身份证信息代码

    用机器学习识别身份证信息需要一些步骤 收集身份证图像数据并打标签 使用深度学习模型 如卷积神经网络 训练识别模型 使用OpenCV等图像处理库对身份证图像进行预处理 以便模型能够识别 使用模型对身份证图像进行预测 并获取身份证信息 但是这里
  • java 跨域问题

    今天看到了一个解决跨域问题的方法 感觉挺方便的 记录一下 1 首先需要创建一个filter public class CorsFilter implements Filter public void init FilterConfig fi
  • Flutter的oktoast插件详解

    文章目录 简介 详细介绍 安装和导入 导入 在MaterialApp外面套一层OKToast组件 为什么是包住MaterialApp 显示Toast消息 高级使用 Toast位置 Toast持续时间 自定义Toast样式 高级用法 使用场景
  • 微信小程序使用echarts图表,与延迟加载图表,解决echarts文件过大

    微信小程序使用echarts图表 与延迟加载图表 解决echarts文件过大 引入echarts组件 展示echarts图表数据 延迟加载图表 如何解决echarts文件过大 引入echarts组件 前往echarts微信版的github地
  • 【华为OD】

    目录 一 题目描述 二 输入描述 三 输出描述 用例 四 题目解析 五 Java玩法 六 JavaScript玩法 一 题目描述 小明有 n 块木板 第 i 1 lt i lt n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木
  • revit二次开发之选择集Selection和过滤集FilteredElementCollector例子(Revit-API2016)

    1 目的 获取当前选择集中包含的对象并列举出来 using System using System Collections Generic using System Linq using System Text using System T
  • 图片处理命令行工具ImageMagick介绍

    最近在做百度OCR图片文字识别时 因为免费版OCR接口调用次数有限 就想把多张图片合并成一张进行文字识别 这就需要在代码中进行图片合并操作 在查找图片批量合并方案时 看到了linux的convert命令 可以将多张图片合并 且使用特别方便