找回密码
 立即注册

查看: 231|回复: 0
打印 上一主题 下一主题

ImageMagick 的强大功能与 Cloudinary 的速度和简单性

[复制链接]

1

主题

1

帖子

7

积分

新手上路

Rank: 1

积分
7
跳转到指定楼层
楼主
发表于 2023-9-18 11:09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大多数开发人员都熟悉ImageMagick,这是一个功能非常强大的开源软件套件,可用于管理和转换图像。

ImageMagick 的功能通常通过命令行使用,但包装器是为多种编程语言编写的,这使得 ImageMagick 成为开发人员中非常受欢迎的选择。

程序员通常使用 ImageMagick 进行简单的操作,例如缩放或拉伸图像以适合特定尺寸。但正如我们将在这篇文章中看到的,有许多先进的技术可用,例如“遮罩”、像素“混合”和其他技术,使您能够实现更复杂和极其有用的效果。

在这篇文章中,我将分享三个使用RMagick(ImageMagick 的 Ruby 包装器)进行图像转换的示例。我将从与覆盖图像相结合的棕褐色效果开始,然后进行日益复杂的转换,例如创建文本纹理和像素化面孔。对于每个示例,我将比较使用 Cloudinary 解决相同挑战所需的条件。凭借其基于云的平台,Cloudinary 消除了编码的复杂性以及与安装相关的麻烦。Cloudinary 还节省了开发人员的时间,使他们能够利用一行代码来完成图像转换。

依赖关系和安装复制此标题的链接
您可以在Cloudinary 的 Github 官方 西班牙消费者手机号码列表 存储库中找到这篇博文的完整源代码。安装示例的依赖项并不是一项简单的任务,主要是因为 OpenCV。但为了简单起见,我已经将 ImageMagick 和 OpenCV 依赖项容器化了,因此您只需要安装Docker即可。

我使用该composite方法以某种方式组合两个图像。目标图像是我们的输入图像。我必须告诉 ImageMagick 我想将作者叠加层放置在图像的“东南”边缘。 Magick::OverCompositeOp告诉 ImageMagick 源图像
最后一步是销毁作者图像对象叠加层。清理所有临时图像对象非常重要。我不再需要叠加层,因为我已经组合了图像并将它们展平。销毁图像对象是使用以下destroy!方法完成的:



云方式:复制此标题的链接
如果这是您第一次使用 Cloudinary,您需要注册一个帐户(从免费帐户开始),并使用上传 API 上传您的图像。您可以使用 https API,无需安装,或者下载并安装您喜欢的框架的 SDK(需要一些快速配置)。

文本纹理 在此示例中,比第一个示例稍微复杂一些,我将使用源图像作为具有选定字体的指定文本的纹理效果,使其看起来像这样:

文本纹理
方式:在本例中我将采用遮罩的概念。
让我们以所需的文本和字体的形状创建一个“蒙版”图像。我使用该create_text_mask方法来执行此操作,该方法接收字符串形式的文本并返回“掩码”Image对象。
以下是一个简短的演练:

与前面的示例一样,我创建了一个Draw用于文本的对象。
然后,我添加颜色、字体系列、大小和粗细,并获取类型度量,以使用我计算的尺寸创建“蒙版”图像对象。然后我创建一个新Image对象并将其背景设置为透明:执行此操作会将输入图像中不属于文本字母区域的所有像素的不透明度值更改为完全透明。

回复

使用道具 举报

     
    Archiver|手机版|小黑屋|

GMT+8, 2024-11-8 21:47 , Processed in 0.109376 second(s), 21 queries , Gzip On.

© 2001-2020 Powered by Discuz! X3.3. program By 手游私服 版权所有

快速回复 返回顶部 返回列表