当前位置: 首页 > news >正文

安装和使用图像处理软件GraphicsMagick @FreeBSD

GraphicsMagick是一个用于处理图像的读取、写入和操作的工具软件。它被誉为图像处理领域的“瑞士军刀”,短小精悍,支持超过88种图像格式,包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF等。

GraphicsMagick的主要特点包括:

  1. 高效:通过使用OpenMP,GraphicsMagick可以利用多线程进行图片处理,从而增强通过扩展CPU提高处理能力。
  2. 易于安装:GraphicsMagick的代码较小,更容易安装,并且在绝大多数的平台上都能使用,包括Linux、Mac和Windows。
  3. 支持大图片处理:GraphicsMagick已经进行过GB级别的图像处理实验,能够支持大图片的处理。
  4. 动态生成图片:特别适用于互联网应用,能够动态的生成图片。
  5. 多种用途:GraphicsMagick可以用来处理图像的多种操作,如调整尺寸、旋转、加亮、颜色调整、增加特效等。
  6. 支持多种编程语言:不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、Ruby等编程语言的调用。

GraphicsMagick是从ImageMagick的一个分支发展而来的,但在某些方面,如效率、安装方便性和稳定性等方面,GraphicsMagick表现得更优秀。此外,GraphicsMagick的手册也非常丰富,为用户提供了大量的帮助信息。

缘起:

装这个软件是为了将Blender里面生成的png序列图片转为gif动画。

刚开始问文心一言,如何在freebsd下将png图片输出为gif文件?它回答:

在 FreeBSD 下,你可以使用 ImageMagick 或 GraphicsMagick 这样的图像处理工具来将 PNG 图片转换为 GIF 文件。

结果在FreeBSD下怎么也找不到ImageMagick的包,后来就装了GraphicsMagick 。再后来才知道这两者的渊源。

安装GraphicsMagick

pkg install GraphicsMagick

安装的时候竟然把blender又安装了一遍 

使用GraphicsMagick

装好之后在xfce4菜单里没有找到,在命令行键入GraphicsMagick也提示没有这个命令,后来才知道其命令是gm ,真是一个有个性的软件啊!

比如将一组png文件生成一个gif动画,命令:

gm convert *.png out.gif

下面是更多例子 

GraphicsMagick命令示例

以下是一些GraphicsMagick命令的例子:

  1. 转换图像格式

    gm convert input.jpg output.png

    这个命令将input.jpg图像转换为output.png格式的图像。

  2. 调整图像大小

    gm convert input.jpg -resize 800x600 output.jpg

    这个命令将input.jpg图像调整为800x600像素大小,并保存为output.jpg

  3. 旋转图像

    gm convert input.jpg -rotate 90 output.jpg

    这个命令将input.jpg图像顺时针旋转90度,并保存为output.jpg

  4. 裁剪图像

    gm convert input.jpg -crop 200x200+100+100 output.jpg

    这个命令从input.jpg图像中裁剪出一个200x200像素大小的区域,并从坐标(100,100)处开始裁剪,然后保存为output.jpg

  5. 在图像上添加文字

    gm convert input.jpg -font /path/to/font.ttf -pointsize 24 -fill white -draw "text 10,50 'Hello, GraphicsMagick!'" output.jpg

    这个命令在input.jpg图像的(10,50)位置添加白色文字"Hello, GraphicsMagick!",字体文件为/path/to/font.ttf,字体大小为24点,然后保存为output.jpg

  6. 从GIF文件中抽取第一帧

    gm convert input.gif[0] output.jpg

    这个命令从input.gif GIF动画中抽取第一帧,并保存为output.jpg

  7. 合并两个图像

    gm composite -geometry +10+10 watermark.png input.jpg output.jpg

    这个命令将watermark.png水印图像叠加到input.jpg图像的(10,10)位置,并保存为output.jpg

  8. 创建缩略图

    gm convert input.jpg -resize 100x100^ -gravity center -extent 100x100 thumbnail.jpg

    这个命令创建一个100x100像素的缩略图。-resize 100x100^保持图像的比例,但不超过100x100像素;-gravity center设置裁剪的重力点为中心;-extent 100x100裁剪图像到确切的100x100像素大小。

相关文章:

安装和使用图像处理软件GraphicsMagick @FreeBSD

GraphicsMagick是一个用于处理图像的读取、写入和操作的工具软件。它被誉为图像处理领域的“瑞士军刀”,短小精悍,支持超过88种图像格式,包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF等。 GraphicsMagick的主要特点包括:…...

一款功能强大的安卓虚拟机应用——VMOS Pro使用分享

前段时间我刚刚分享一个WeChat平板模块能够允许用户自由修改系统设置,让你的Android备用手机焕发新生,实现手机PAD化,实现两台设备同时登录微信号。今天我分享的这个相比WeChat更为简单,因为它可以通过虚拟机的方式进行多种androi…...

【408真题】2009-12

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…...

vue3第三十三节(TS 之 computed watch)

vue3 组合是API 中我们经常使用的 监听函数 computed 和 watch使用 1、computed 里面添加类型 <script setup lang"ts"> import { ref, computed } from vue const age ref(18) // 定义一个Person 接口 interface Person {age: numbername: string } const…...

工厂模式(简单工厂模式+工厂模式)

工厂模式的目的就是将对象的创建过程隐藏起来&#xff0c;从而达到很高的灵活性&#xff0c;工厂模式分为三类&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 在没有工厂模式的时候就是&#xff0c;客户需要一辆马车&#xff0c;需要客户亲自去创建一辆马车&#xff0c;…...

整理好了!2024年最常见 20 道 Redis面试题(四)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道 Redis面试题&#xff08;三&#xff09;-CSDN博客 七、Redis 单线程模型是如何工作的&#xff1f; Redis 是一个基于单线程模型的高性能键值存储数据库。尽管 Redis 操作大多数是单线程执行的&#xff0c;但它…...

sudo pip3 install rpi_ws281x error: externally-managed-environment

报错 error: externally-managed-environment piraspberrypi:~ $ sudo pip3 install rpi_ws281x error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz i…...

day08-Java常用API

day08——Java常用API 一、今日内容介绍、API概述 各位同学&#xff0c;我们前面已经学习了面向对象编程&#xff0c;使用面向编程这个套路&#xff0c;我们需要自己写类&#xff0c;然后创建对象来解决问题。但是在以后的实际开发中&#xff0c;更多的时候&#xff0c;我们是…...

设计模式--建造者模式

建造者模式是一种创建型设计模式&#xff0c;它允许用户通过一步一步地构建对象来创建复杂的对象。这种模式在许多应用场景中非常有用&#xff0c;例如在创建具有多个可选参数的对象、构建具有多种配置的对象以及生成具有多个部分的对象时。 应用场景 创建具有多个可选参数的…...

运行时间比较

subprocess.run() 函数参数的含义&#xff1a; shell_command&#xff1a;这是要执行的命令。它可以是一个字符串&#xff0c;也可以是一个包含命令和参数的列表。例如&#xff0c;“ls -l” 或 [“ls”, “-l”]。shellTrue&#xff1a;这是一个布尔值参数&#xff0c;指示是…...

【系统架构师】-案例篇(十四)数据库与分布式

1、规范化 不满足3NF&#xff0c;导致的存储异常 原关系模式 航班&#xff08;航班编号&#xff0c;航空公司&#xff0c;起飞地&#xff0c;起飞时间&#xff0c;目的地&#xff0c;到达时间&#xff0c;剩余票数&#xff0c;票价&#xff09; 代理商&#xff08;代理商编号…...

Golang实现递归复制文件夹

代码 package zdpgo_fileimport ("errors""os""path/filepath""strings" )// CopyDir 复制文件夹 // param srcPath 源文件夹 // param desPath 目标文件夹 // return error 错误信息 func CopyDir(srcPath, desPath string) error {…...

【漏洞复现】用友U8 CRM uploadfile 文件上传致RCE漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚焦成长型、创新型企业&#xff0c;提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 uploadfle.php 文件存在任意文件上传漏洞&#xff0c;未经身份验证的攻击者通过漏洞上传…...

键盘盲打是练出来的

键盘盲打是练出来的&#xff0c;那该如何练习呢&#xff1f;很简单&#xff0c;看着屏幕提示跟着练。屏幕上哪里有提示呢&#xff1f;请看我的截屏&#xff1a; 截屏下方有8个带字母的方块按钮&#xff0c;这个就是提示&#xff0c;也就是我们常说的8个基准键位&#xff0c;我…...

构建sqli-labs学习环境与掌握SQL注入技术教程

根据提供的文档内容&#xff0c;以下是关于安装sqli-labs学习环境和SQLI-LABS教学的详细步骤和知识点&#xff1a; 安装sqli-labs学习环境 环境准备 操作系统&#xff1a;CentOS 7.6主机名&#xff1a;xuegod63IP地址&#xff1a;192.168.1.63 关闭防火墙和SELinux 禁用并…...

力扣HOT100 - 1143. 最长公共子序列

解题思路&#xff1a; 动态规划 class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i 1; i < m; i) {char c1 text1.charAt(i - 1);for (int j 1…...

【贪心算法题目】

1. 柠檬水找零 这一个题目是一个比较简单的模拟算法&#xff0c;只需要根据手里的钱进行找零即可&#xff0c;对于贪心的这一点&#xff0c;主要是在20元钱找零的情况下&#xff0c;此时会出现两种情况&#xff1a;10 5 的组合 和 5 5 5 的组合&#xff0c;根据找零的特点&a…...

yarn常用命令

Yarn 是一个快速、可靠且安全的依赖管理工具&#xff0c;用于替代 npm。以下是一些常用的 Yarn 命令&#xff0c;用于不同的包管理和项目依赖安装场景&#xff1a; 初始化一个新的项目 yarn init这个命令会引导你创建一个 package.json 文件。 安装依赖 yarn add [package]…...

nginx+nginx-http-flv-module在Linux服务器搭建

需求 在服务器搭建点播/视频平台的话需要在服务器搭建nginx和rtmp模块 rtmp模块 rtmp 模块有 nginx-rtmp-module &#xff0c;但是我们这里使用 nginx-http-flv-module 来替代。因为后者是基于前者开发的&#xff0c;前者拥有的功能后者都有&#xff0c;后者是国内的开发开…...

多线程(八)

一、wait和notify 等待 通知 机制 和join的用途类似,多个线程之间随机调度,引入 wait notify 就是为了能够从应用层面上,干预到多个不同线程代码的执行顺序.( 这里说的干预,不是影响系统的线程调度策略 内核里的线程调度,仍然是无序的. 相当于是在应用程序…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...