利用脚本将文字插入到图片或进行多个图片拼接

简介:

最近做一个拼图游戏,因为有十几关,所以测试的时候也是看的两眼冒金星!于是想到在图片上标上数字,直接按数字排序就方便多了。
Linux下有个图片处理工具imagemagick很强大,正适合做这种后台处理图像的工作。

安装方法:

$ sudo aptitude install imagemagick



1、添加文本的命令(折腾了半天才得来的成果):

$ convert -font helvetica  -pointsize 50 -density 65  -fill red -draw "text 0,56 T99"  in.jpg out.jpg


参数解释:

  • convert - imagemagick工具的一个核心命令,用于图片格式转换,缩放,剪切等等
  • -font - 指定字体
  • -pointsize - 字体点阵大小
  • -density - 字体点阵密度
  • -fill - 字体颜色
  • -draw - 'text'表示插入文本,'0,56'表示文本的起始坐标,'T99'表示要显示的文本
  • in.jpg - 输入图片文件名称
  • out.jpg -输入图片文件名称


注意:
'T99'表示要显示的文本,注意这里文本必须以字符开头,文字或下划线或其它字符开头会报错

关于字体类型还可以看这一段解释:

如何用23英寸高的文字注释一个图片?   
先检查有无可缩放字体:
$ xlsfonts -fn '*-0-0-0-0-*' 
 
有则:
$ convert -font '-*-helvetica-*-*-*--300-300-*-*-*-*-iso8859-1' -fill green -draw 'text 50,300 Magick' image.gif annotated.gif
 
# If you have the FreeType support built into ImageMagick,
# just increase your pointsize and/or density:
$ convert -font Helvetica -pointsize 100 -density 300 -fill green -draw 'text 50,300 Magick' image.gif annotated.gi


2、多个图片拼接命令

$ convert -size 500x500 xc:back -draw 'image Over 10,10 200,200 "in.jpg"' out.jpg
$ convert -size 500x500 xc:#cfcfcf -draw 'image Over 10,10 200,200 "in.jpg"' out.jpg


拼接两个640x960图成1280x640片示例:

convert -size 1280x960 xc:#cfcfcf -draw 'image Over 0,0 640,960 "2.jpg"' -draw 'image Over 640,0 640,960 "1.jpg"'   out.jpg


参数说明:

  • -size - 定义的图片尺寸,如果要拼接多图,需要提取计算出最后的尺寸
  • xc - 输出图片背景颜色,两种指定方式看上面示例
  • -draw - 该参数的格式为' image Over 起始坐标 要显示的width与height "输入图片名称"' 输出图片名称


注意:'image Over'关键字不可少,表示添加图片,好像也可以使用'image SrcOver',具体差别不太清楚;起始坐标表示要插入的图片在输出图像中左上角对应的坐标;第二个数值对为在输出图像上要显示的width与height,如果给的不成比例,它会自动调整

至于如何将一张图片叠加到另一张之上,通过上面拼接示例也很容易实现的(~自己去思考~)。

关于imagemagick的更多信息,可以参阅本人很久之前整理(或撰写)的三篇文档:
[1] ImageMagick FAQ摘要:www.mcuos.com/thread-598-1-4.html
[2] ImageMagick简单介绍:www.mcuos.com/thread-596-1-4.html
[3] ImageMagick详细补充:www.mcuos.com/thread-597-1-4.html

本文转自博客园知识天地的博客,原文链接:利用脚本将文字插入到图片或进行多个图片拼接,如需转载请自行联系原博主。


相关文章
|
计算机视觉
OpenCV-通道合并cv::merge
OpenCV-通道合并cv::merge
398 0
|
4月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
前端开发 JavaScript Java
JavaScript闭包深入剖析:性能剖析与优化技巧
JavaScript 闭包是强大而灵活的特性,广泛应用于数据封装、函数柯里化和事件处理等场景。闭包通过保存外部作用域的变量,实现了私有变量和方法的创建,提升了代码的安全性和可维护性。然而,闭包也可能带来性能问题,如内存泄漏和执行效率下降。为优化闭包性能,建议采取以下策略:及时解除对不再使用的闭包变量的引用,减少闭包的创建次数,使用 WeakMap 管理弱引用,以及优化闭包结构以减少作用域链查找的开销。在实际开发中,无论是 Web 前端还是 Node.js 后端,这些优化措施都能显著提升程序的性能和稳定性。
299 70
|
10月前
|
存储 缓存 NoSQL
阿里云服务器实例规格选型:八大业务场景精准选型参考
阿里云提供了丰富多样的云服务器实例规格,以满足不同用户的多样化需求。然而,面对琳琅满目的实例选项,许多初次接触云服务器的用户往往感到无所适从。本文旨在帮助用户根据自身的业务场景和细分需求,精准选择最适合的阿里云服务器实例规格,确保资源的有效利用和成本的合理控制。
|
边缘计算 自动驾驶 物联网
5G技术的低延迟目标及其对4G的显著改进
5G技术的低延迟目标及其对4G的显著改进
1353 0
|
监控 JavaScript Shell
如何安装和管理 Supervisor
如何安装和管理 Supervisor
472 0
|
小程序 安全 搜索推荐
陪玩交友互动小程序开发:打造有趣的社交互动平台
【陪玩交友小程序】融合趣味与实用,打造安全社交新平台。用户经实名认证后,可享在线匹配、语音聊天、游戏组队等多元互动。智能推荐系统助你高效找到玩伴,共享游戏攻略与娱乐资讯。个性化推荐服务,让每一次交流都充满乐趣,邀请好友共赴精彩社交之旅。
|
JSON 负载均衡 算法
SpringCloud-Feign解决模块之间的远程调用
SpringCloud-Feign解决模块之间的远程调用
|
机器学习/深度学习 自然语言处理 算法
AIGC技术到底是什么?为什么这么火热?
AIGC技术到底是什么?为什么这么火热?
746 0

热门文章

最新文章