ImageMagick 示例 --
创建缩略图和边框
![]() |
||
缩略图存储
我想首先从一个非常重要的点开始。来自摄像机和照片扫描的原始图像应保存在原始格式的安全位置,最好是非有损格式(不是 JPEG 图像格式),无需任何修改、调整大小或其他更改,除非可能是文件名更改。当然,扫描的图像可以重新扫描,但最好重用原始源,而不是以后从已经降级的副本重新执行。这非常重要,因为任何形式的修改都意味着图像中某些信息的丢失,并提供了一个可以重新处理图像以用于其他用途的来源。原始图像不必是您的工作图像,该图像可以调整大小或调整颜色以进行显示,只需确保将您的图像保存并备份到安全的地方以备将来使用。接下来要做的事情,甚至在您创建任何缩略图之前,就是决定如何相对于您的正常大小的图像格式保存缩略图,然后坚持该方案。这对于网页尤其重要。方案包括……- 以您想要或需要的尺寸以有损 JPEG 格式保存主照片图像,然后使用相同的名称为生成的缩略图,但使用 GIF 图像格式。例如,相同的文件名但不同的格式和后缀。主图像:
photo_name.jpg
缩略图:
photo_name.gif
- 将缩略图与相同名称存储在名为“
thumbs
”或任何方便您的子目录中。主图像:photo_name.jpg
缩略图:
thumbs/photo_name.jpg
- 使用与原始图像相同的格式,但在文件名中添加额外的字符串。典型的字符串添加包括“
_tn
”、“_small
”、“_thumb
”等。主图像:photo_name.jpg
缩略图:
photo_name_tn.jpg
- 上述方法的某种组合。没有理由不能以不同的图像格式保存缩略图,并在文件名中附加额外的图像后缀,并保存在子目录中!主图像:
images/photo_name.jpg
缩略图:
thumbs/photo_name.jpg.gif
这在 WWW 上实际上非常常见,我甚至见过这两个目录存储在完全不同的机器上!
magick mogrify
”生成所有缩略图,而不会破坏原始图像,方法是使用“-format
”设置来指定输出图像格式。从 IM v3.2.0 开始,第二个方案现在也可以使用“magick mogrify
”来完成,这要归功于添加了一个特殊的“-path
”设置,该设置指定一个不同的目录来保存修改后的图像。例如,这会将 JPG 图像转换为“thumbs
”子目录中的 GIF 缩略图,该子目录刚刚创建。
mkdir thumbs magick mogrify -format gif -path thumbs -thumbnail 100x100 *.jpg |
magick mogrify
”之前复制原始图像,创建用于处理图像的特殊脚本,或其他一些 DIY 方法。在批量处理 - 不使用“magick mogrify
”的示例部分的末尾详细介绍了一些更简单的非 IM 技术。无论您选择哪种方法,重要的是选择一种缩略图存储方案,然后坚持下去。通过对所有缩略图使用相同的方案,您就可以编写 shell 或 Perl 脚本,使缩略图生成甚至 HTML 链接的生成变得容易。稍后详细介绍。 缩略图格式的选择
保存缩略图的格式会对其最终磁盘大小和网页下载速度产生重大影响。在这方面,我建议您研究各种常见文件格式的摘要。具体来说,您应该注意……- JPEG 压缩效果好且是有损的,但它专为大型真实世界图像而设计,而不是小型缩略图。它也不允许任何形式的透明度。总之,该格式对于大型图像来说很好,对于缩略图来说很糟糕。注意配置文件(见下一节)。虽然 JPG 不推荐用于缩略图,但为了在 WWW 上查看图像,建议您使用较小的 800x600 像素图像,以及更低的“
-quality
”百分比(例如 50 甚至 30%),尽管它看起来不太好。有人建议使用“-sampling-factor 2x1
”也会产生更小的 JPEG 图像大小。我不建议将完整的原始图像直接放置在网络上,除非是暂时(在参考位置)供朋友下载。请记住,不要链接到它(即使通过目录索引),并且永远不要超过一天,否则它可能会被 Google 搜索到。 - GIF 适用于简单的少量图像,并且压缩效果还可以。它有 256 种颜色限制,但对于小图像来说,这很少会引起注意。它还可以对图像进行卡通动画,但这对于缩略图来说是不需要的,除非您真的想变得花哨。问题是该格式仅具有布尔(开/关)透明度,这使得形状图像上的边框看起来很糟糕。解决方法是设计缩略图以仅使用布尔透明度,或将其安排以便它只能用于特定的背景颜色。有关详细信息,请参阅有关GIF 在背景颜色或图案上的示例。
-
PNG 是缩略图的现代理想格式。它具有良好的压缩和内部格式样式。它是无损的,可以显示所有颜色,并且如今几乎所有浏览器都支持它(尽管对于 Microsoft Internet Explorer,在 v7 之前,需要在网页中添加一些 Java 脚本)。更重要的是,此格式支持半透明颜色,使阴影和边缘清晰锐利,或根据您的需要淡化和模糊。但是,此格式不执行动画,尽管相关的 MNG 格式可以执行。然而,很少有浏览器似乎支持该格式。对于缩略图,您可以通过减少深度和颜色数量以及为最终的缩略图图像设置更高的“
bzip
”压缩质量(“-quality
”中的第一个数字)来减小最终图像的大小。例如,以下建议用于不涉及透明度的小型 PNG 缩略图。-strip -quality 95 PNG8:thumbnail.png
不要将 JPEG、PNG8 或 GIF 用于中间工作图像!
最好使用 PNG 或 MIFF。
最好使用 PNG 或 MIFF。
配置文件、剥离和 JPEG 处理
许多来自数码相机、扫描软件和一些绘图程序(Photoshop 以此而闻名)的图像以配置文件的形式保存有关图像的额外信息。这包括 JPEG、PNG、TIFF 等图像格式,以及从 IM v6.2.4-1 开始的 GIF。当然,IM 特定的格式 MIFF 也会这样做。(有关更详细的信息,请参阅图像配置文件)。这些配置文件的大小可达 60 Kb,因此会对文件大小产生重大影响,并且默认情况下,IM 会保留此配置文件信息。缩略图不需要此数据,而且通常即使主图像也不需要它。您还可以使用 IM 命令从图像中删除配置文件……
magick input.jpg -strip output.jpg magick mogrify -strip *.jpg |
-profile '*'
”删除配置文件。但是,建议您仅在修改图像时才剥离配置文件,尤其是在减小图像大小以用于 Web 显示或缩略图图像时。在调整大小(尤其是生成较小的缩略图图像)时剥离配置文件非常普遍,因此“-resize
”和“-strip
”被组合成一个新的操作,仅用于此目的。自然地,此调整大小操作称为“-thumbnail
”。例如……
magick -define jpeg:size=240x180 image.jpg -thumbnail 120x90 thumbs/image.gif magick mogrify -path thumbs -format gif -define jpeg:size=240x180 -thumbnail 120x90 '*.jpg' |
![]() ![]() |
在 IM v6.5.4-7 之前,“-thumbnail ”会从图像中剥离所有配置文件,包括 ICC 颜色配置文件。从该版本开始,颜色配置文件将被保留。如果不需要颜色配置文件,则“-strip ”所有配置文件。
|
magick mogrify
" 当然可以为整个 JPEG 图像目录生成缩略图,但请注意它不会覆盖您想要保留的任何缩略图。有关用于循环遍历大量图像的其他多种非 IM 方法,请参阅 批量处理 - 不使用 Mogrify 的示例部分。对于非常大的图像,"-thumbnail
" 调整大小操作会更进一步,首先将图像缩小到最终缩略图大小的 5 倍,然后再进行实际的调整大小操作。这进一步加快了缩略图的生成速度。但是,对于缩略图 JPEG 图像,可以通过一开始不将整个图像读入内存来使用一种更好的限制初始图像大小的方法。"-define jpeg:size=
" 设置(如上例所示)是对 JPEG 图像库的一个特殊提示,以减少从非常大的 JPEG 图像中读取的数据量。请参阅 读取 JPEG 文件。![]() ![]() |
在 IM v6.5.6-0 之前,此编码器设置是从 "-size " 设置中提取的。当用户使用 "-size " 创建图像,然后让 JPEG 读取产生意外结果时,这会导致问题。因此,这被更改为一个特殊的编码器设置。在较旧版本的 IM 中,由于这种“双重”作用,您可能需要使用 " +size " 重置设置,然后再读取 JPEG 图像。 |
-define jpeg:size=
" 设置来处理 JPEG 图像。因此,现在推荐用于调整大小任何输入图像格式的方法是……
magick -define jpeg:size=240x180 input.img'[120x90]' \ -strip output_thumbnail.gif |
通用缩略图创建
常规生成缩略图(特定高度)
让我们将 大型示例 JPEG 图像 转换为高度为 90 像素的 GIF 缩略图,并自动调整宽度(在 250 像素宽度限制内),以保持图像的纵横比。
|
![]() |
-thumbnail
" 选项。这不仅调整了图像大小,还删除了原始 JPEG 图像中可能存在的任何和所有配置文件和注释信息。此外,由于它对图像的初始缩小使用了 "-sample
" 调整大小操作符,因此速度更快,同时为小型缩略图生成合理的结果。我还为正在读取的图像设置了最小 "-define jpeg:size=
"。这会传递给 JPEG 库,该库将返回介于此大小和此大小的两倍(如果可能)之间的图像,而不是整个非常大的原始图像。基本上,当不需要时,不要用巨大的图像溢出计算机内存。我使用的 JPEG 大小提示至少是最终缩略图的两倍,以便调整大小仍能生成看起来合理的结果。"-auto-orient
" 操作符确保图像(如果来自数码相机)根据相机的方向正确旋转。对于我正在使用的“桌面”图像,这不需要,但我在上面将其包含在内以供数码相机用户使用。但是请注意,方向仍然可能出错,尤其是在直接向下或向上查看照片时,例如拍摄文档照片时。结果是具有特定高度但宽度可变的缩略图。我将此缩略图用于我自己的网页,以便一行中的一系列图像在高度上都匹配,形成整齐的外观。上面 250 像素的宽度限制非常重要。如果未设置(例如:使用 "-thumbnail x90
"),当生成非常长且细的图像(例如 网络线条图像 中显示的图像)的缩略图时,IM 可能会遇到问题。在这种情况下,结果将是图像的非常非常长的 *放大*,而不是一个小缩略图。有些人(包括我自己)发现,虽然 IM 的调整大小是最好的实现之一(请参阅 IM 调整大小与其他程序),但结果仍然有点模糊。因此,您可以在 "-thumbnail
" 调整大小操作后稍微锐化图像(使用 "-unsharp
") 来改进上述结果。有关更多信息,请参阅 锐化调整大小的图像 - Photoshop 调整大小技巧,但这确实归结为个人品味的问题。"
magick mogrify
" 版本与 "magick
" 命令(没有初始输入图像)相同,但它会自动生成当前目录中 *每个* JPEG 图像的缩略图。图像参数被引用,以便 IM 本身扫描目录,而不是命令行 shell。这可以防止在包含大量图像的目录中出现“行限制溢出错误”。
magick mogrify -format gif -define jpeg:size=500x180 -auto-orient \ -thumbnail 250x90 -unsharp 0x.5 '*.jpg' |
![]() ![]() |
请注意,"magick mogrify " 会盲目创建缩略图,替换任何同名现有图像。在这种情况下为 GIF 图像。使用此命令时始终建议格外小心。在进行任何处理之前,始终建议备份副本。 |
![]() ![]() |
您可以使用 "-path " 设置定义一个单独的缩略图目录,而不是指定不同的格式(使用 "-format "),以防止 "magick mogrify " 覆盖原始源图像。您可以同时使用这两个输出选项。 |
magick mogrify
" 可以使用不同的后缀 ("-format
") 或目录 ("-path
") 输出新图像,但它们是使用此命令的唯一选项。如果您还想更改图像的名称,例如添加 "_tn
" 或 "_sm
" 来表示图像的缩略图或小版本,那么我建议您创建一个 shell 脚本来为您完成这项工作,使用 "magick
" 一次处理一个图像。 *我编写了这样的脚本,同时生成 HTML 索引。*调整缩略图大小以适应
另一种自动缩略图生成的形式是将图像缩小以适合固定大小的框,例如 "100x100
",但保持图像的纵横比。嗯,这是调整大小几何设置的默认含义。但是,我更喜欢不放大已经适合此类框的图像。为此,您需要在几何字符串中添加 "> "。
|
![]() |
填充缩略图
下一个最常见的请求是生成用特定颜色(通常是“black
”或“transparent
”,但对于这些示例,我将使用“skyblue
”)边框填充图像的缩略图,以便缩略图完全是您想要的大小。例如:将大小为 400x300 像素的图像缩小以适合 100x100 像素的框,通常(使用上述方法)将具有 100x75 像素的大小。我们希望在图像的顶部和底部(以及侧面,以确保)添加一些填充边框,以使最终的缩略图图像始终为 100x100 像素。有多种方法可以做到这一点,从 IM v6.3.2 开始,最好的方法是使用 Extent 操作符。
|
![]() |
从 IM 版本 6.2.5 开始,您还可以使用 视口裁剪,并将结果展平到背景颜色上。
|
![]() |
使用 Extent 和 视口裁剪 之间的主要区别在于您是否希望使用最小的 虚拟画布 或使整个区域“填充”。填充图像的另一种方法是将缩略图叠加到大小正确的背景图像(实际图像、纯色或平铺画布)上,在本例中为 128x128 的“granite: ”内置图像。
|
![]() |
-composite
" 操作需要由单独的 "composite
" 命令完成,而不是上述单命令方法。但是,从图像处理的角度来看,上述所有操作实际上都在做同样的事情。 裁剪缩略图以适应
另一种方法是,与其填充图像以适合我们想要的特定缩略图大小,不如切掉不适合最终大小的图像部分。当然,这意味着您实际上会丢失原始图像的一些部分,特别是图像的边缘,但结果是图像中心部分的放大缩略图。这通常(但并非总是)是图像的主要主题,因此它是一种实用的缩略图创建方法。从 IM v6.3.8-3 开始,添加了特殊的调整大小选项标志“^
”以简化此操作。我们只需使用此标志调整大小,然后裁剪溢出所需大小的图像部分。
|
![]() |
![]() ![]() |
在 IM v6.3.8-3 之前,添加此特殊标志时,您需要一些非常复杂的技巧才能获得相同的结果。有关详细信息,请参阅 调整大小以填充给定空间。 |
区域适配缩略图大小
最后两种方法通常会使图像非常小,并带有许多额外的填充,或者,它会切掉很多图像以完全填充空间。但是,通过使用不同的调整大小标志,可以获得介于这两种极端情况之间的缩略图。例如,100x100 像素的缩略图有 10,000 个像素。现在,如果我们要求调整大小将图像大小调整到大约这么多像素(使用 调整大小“@
”标志),您将拥有一个需要一些填充和一些裁剪的图像。这最大化了结果缩略图的大小,同时不会切除太多。例如……
|
![]() |
适应给定空间总结
总而言之,以下是将图像缩略图化到特定大小区域的三种方法的结果。所有三种方法都使用完全相同的代码,只是使用的调整大小参数/标志略有不同。
![]() 填充拟合 调整大小,无标志 |
![]() 区域拟合 调整大小,“@”标志 |
![]() 裁剪以拟合 调整大小,“^”标志 |
正方形填充和裁剪
上述填充和裁剪方法假设您知道要使图像适合的区域的最终大小。但这并非总是如此。有时您只想“使图像正方形”,可以通过“填充”它(外部正方形)或“修剪”边缘(内部正方形)来实现。从 IM 讨论论坛上关于 使图像正方形 的主题中,开发了一些方法。可以使用 马赛克 通过旋转图像副本创建更大的背景画布来完成外部正方形。
|
![]() |
|
![]() |
|
![]() |
|
![]() |
![]() ![]() |
IMv7 允许您将上述数学运算直接作为裁剪或范围参数的一部分进行,从而防止丢失图像元数据。 |
手动裁剪
我生成用于网页的缩略图图像的常规方法是混合使用自动和手动脚本。我的图像的最终设置是..- 我使用 PNG 或 TIFF 作为照片的原始、非常大的扫描件。或者从数码相机下载的原始 JPEG 图像。基本上是用于存档的未修改的原始源图像。我现在也喜欢在这个图像的文件名中包含字符串“
_orig
”。 - 当点击或选择缩略图时,用于网页查看的较小的 JPEG 图像格式。此图像已调整大小以适合 800x800 像素的框,这对于大多数网页用户查看来说都是合适的大小。我通常在文件名中添加“
_md
”表示中等大小的图像。 - 最后是 GIF 缩略图,调整大小为固定 90 像素高,宽度可变。这使得网页上的居中缩略图行看起来整洁美观,但会自动填充浏览器窗口的宽度,无论用户使用什么尺寸的浏览器。同样,我通常现在在图像文件名中包含“
_tn
”,以表示它是一个缩略图。
magick mogrify
”生成网页可查看的 JPEG 图像(中等大小)。这将图像的下载时间和查看大小减少到对普通网页用户来说实用的程度(可能是通过调制解调器登录的用户)。从这些图像中,我再次使用“magick mogrify
”生成初始的缩略图集。但是,我经常发现,在典型的照片中,当缩略图被查看时,缩略图的主题变得太小而无法形成有效的缩略图。为了解决这个问题,我检查了自动生成的缩略图,在大约一半的情况下手动创建了我自己的“放大主题”缩略图。我读取 JPEG 图像,并将其裁剪到图像的主要主题,有效地“放大”照片的主题,并去除图像的大部分背景内容。然后使用“magick -thumbnail
”或更常见的我正在查看和裁剪图像的图形程序(通常是“XV
”,见下文)对其进行平滑处理和缩略图处理。因此,我手动围绕主题进行裁剪,突出照片的要点(右侧),然后进行缩略图处理,而不是缩略图中照片中的人几乎不可见(左侧)。这使得用户能够更清楚地看到图像内容,从而更好地决定他们是否真的想要下载并查看图像的较大 JPEG 版本。
昆士兰风筝飞行者,Ron 和 Val Field | ||
![]() 自动 生成 缩略图 |
![]() |
![]() 手动裁剪 和调整大小 缩略图 |
(点击任一图像查看原始扫描照片) |
magick mogrify
”会覆盖任何现有的、可能是手动生成的缩略图,因此在执行任何手动缩略图生成后,您不能再次使用它。“magick mogrify
”命令很有用,但也非常危险,因为它会覆盖大量图像。在全局范围内对所有图像运行“magick mogrify
”之前,请务必三思。 HTML 缩略图页面
一旦我在目录中整理好所有缩略图图像,我就会使用我编写的名为“thumblinks
”的特殊 perl 脚本,它查找图像(JPEG 照片和 GIF 缩略图),并生成 HTML 链接,甚至生成完整的 HTML 照片页面。该脚本将读取并包含 GIF 缩略图的大小在 HTML 中,并在缩略图链接周围附加预先准备好的页眉和页脚文件。如果该脚本在页眉或页脚文件中本身找到现有的链接,它还会从其生成的列表中删除任何缩略图链接。这听起来可能很复杂,但它使我的 HTML 页面生成非常快速和灵活,并确保目录中的所有图像缩略图都已添加到该目录的索引页面中,同时仍然允许我对索引页眉中的特定图像进行注释。它还使页面独立于用户的窗口大小,自动调整以适应。有关我的“thumblinks
”脚本输出的简单示例,请参见城堡艺术品墓。有关生成此类链接的快速示例和起点,请查看使用identify 命令的示例。FavIcon 网页链接缩略图
网页浏览器在网站的顶级网页上经常查找的“favion.ico
”图标,用于整个网站。该图像是特殊的多分辨率图像格式,可以通过以下方式创建。
magick image.png -alpha off -resize 256x256 \ -define icon:auto-resize="256,128,96,64,48,32,16" \ favicon.ico |
image.png
”可以是您喜欢的任何内容,但应为正方形。如果不是,这也应该是上述的第一步。您还可以包含更大的分辨率,例如 128 或 256 像素,但很少有浏览器会使用它们。16 和 32 像素大小在这些 ICO 文件中使用得更为普遍,因此可能对这些像素大小进行特殊强调。还要记住,许多浏览器会减少图像的颜色,以便减少存储在用户书签文件中的空间。这带给我们另一个要点。由于通常只使用最小的图像,并且还会进一步减少颜色,因此建议使图像尽可能小且定义清晰。这是一个手动调整 ICO 文件格式图像大小的示例。
magick image.png -background white \ \( -clone 0 -resize 16x16 -extent 16x16 \) \ \( -clone 0 -resize 32x32 -extent 32x32 \) \ \( -clone 0 -resize 48x48 -extent 48x48 \) \ \( -clone 0 -resize 64x64 -extent 64x64 \) \ -delete 0 -alpha off -colors 256 favicon.ico |
如前所述,通常只使用在网站顶级目录中找到的“
favion.ico
”图像,但是您也可以通过将以下 HTML 标签添加到页面的页眉中来指定链接缩略图图像的位置...
<LINK REL="icon" HREF="/path/to/favicon.ico" type="image/x-icon"> <LINK REL="shortcut" HREF="/path/to/favicon.ico" type="image/x-icon"> |
/path/to/favicon.ico
”可以是浏览器应从中获取网页缩略图图像的绝对或部分 URL/URI。“REL="shortcut"
”特定于 Internet Explorer(IE9 之前),而不是 HTML 规范的正式组成部分。可以使用“REL="shortcut icon"
”将两个 HTML 标签合并在一起,但是通过将标签分开,您可以为非 IE 浏览器(如 Firefox)使用非 ICO 图像文件格式(如 SVG)。请记住,如果不使用此 html 元素,则改为使用在网站顶级目录中找到的“favicon.ico
”文件(如果存在)。ICO 图像格式为所有现代浏览器普遍理解。除 Internet Explorer 外,所有浏览器还可以使用 JPEG、PNG 和 GIF 图像文件格式作为链接缩略图。一些浏览器(如 Firefox)甚至可以使用动画 GIF 或 SVG 图像文件格式。但是,由于这些后一种格式通常无法以不同的分辨率和颜色数存储多个图像,因此最好坚持使用 ICO 文件格式作为“favion.ico
”图像。其他非 IM 技术
我用于手动图像处理的“XV
”程序还在名为“.xvpics
”的子目录中生成缩略图图像。此目录中图像的格式是程序自己的特殊缩略图格式(忽略该目录中的文件名后缀)。这些缩略图限制为 80x60 像素,因此有点“小”(除非您修改“xv
”以使用更大的缩略图——请参阅下面的链接)。IM 理解“xv
”缩略图格式(基于“NetPBM
”图像格式),因此您可以使用 XV 快速生成所有缩略图,然后将 XV JPEG 图像的缩略图转换为 GIF 图像以进行进一步处理...xv -vsmap & # generate thumbs with the "Update" button rm .xvpics/*.gif # delete XV thumbs of existing "gif" thumbnails magick mogrify -format gif .xvpics/*.jpg mv .xvpics/*.gif . # move the new "gif" thumbnails to original dir如果您厌倦了 XV 缩略图的小尺寸,尤其是在较大的现代显示器上,您可以修改 XV 代码。请参阅我的XV 修改说明,它允许您让 XV 使用更大的缩略图尺寸。我自己使用 120x90 像素的缩略图。
进一步处理——添加绒毛
以上仅仅是您可以做的事情的开始,以使您的缩略图更有趣。除了基本的缩略图图像之外,您还可以添加边框、旋转,甚至可以随机选择样式,以使您的缩略图库更有趣。像这样的缩略图添加,我称之为“绒毛”,就像您洗完衣服后发现覆盖在衣服上的多余棉绒一样。也就是说,它为缩略图添加了不必要的额外内容,但可以使网页和索引图像更有趣。请注意,许多以下方法和处理非常复杂,可能需要更深入地了解 ImageMagick 的各种图像处理选项。添加图像标签
在创建缩略图期间,您还可以添加标签,位于缩略图的上方、下方甚至顶部。但是,此类图像处理在使用标签注释图像中得到了更彻底的介绍。请记住,在这些示例中使用“-thumbnail
”或“-strip
”,而不是“-resize
”。例如...
|
![]() |
|
![]() |
thumbnail.gif
”图像,或使用缩略图调整大小运算符来去除图像的配置文件和注释。然后,我使用“+clone
”、“+sample
”和“-alpha
”生成一个更大的透明工作画布,其中还包含原始图像的元数据副本。这让我可以使用图像的“注释”字符串以及注释“-annotate
”运算符来提供要在图像上叠加的文本。只有在我完成文本叠加后,我才清理并“-strip
”该信息。凸起按钮
“-raise ”运算符基本上是为了突出矩形图像的边缘以形成凸起的按钮而创建的。它是一种简单、快速且有效的缩略图转换。
|
![]() |
相同的运算符具有“加号”形式,可用于创建下沉的高亮效果。
|
![]() |
气泡按钮
通过一些技巧,“-raise
”操作符可以用来制作平滑的“气泡状”凸起按钮。
magick thumbnail.gif -fill gray50 -colorize 100% \ -raise 8 -normalize -blur 0x8 bubble_overlay.png magick thumbnail.gif bubble_overlay.png \ -compose hardlight -composite bubble_button.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](bubble_overlay.png)

![[IM Output]](bubble_button.png)
添加边框
简单的“-border
”操作符可以用来在图像周围生成一些复杂的框架。
|
![]() |
简单框架
类似地,“-frame ”操作符可以轻松地在图像周围添加框架。
|
![]() |
蒙太奇框架
montage 命令提供了一种更简单的方法来完成上述所有操作,以及更多操作。它不仅可以生成缩略图(或整页缩略图),还可以标记缩略图以包含文件名、磁盘大小和尺寸或用户指定的字符串等信息。这是一个使用“magick montage ”生成带框架缩略图的简单示例。
wrjpgcom ”添加到图像中。有关更多详细信息,请参见非 IM JPEG 处理。 |
![]() |
即使仅使用“magick montage ”,您也可以在缩略图生成方面获得非常花哨的效果。
|
![]() |
柔和模糊的边缘
晕影操作符提供了一种简单的方法来在图像周围添加模糊边缘。
|
![]() |
|
![]() |
10\!
距离缩放标志控制。这仅在 IM v6.6.1-6 中添加。这还具有适用于形状图像的额外优势,尽管需要更复杂的初始化才能在距离公式中正确保留和抗锯齿像素。有关更多详细信息,请参见使用距离羽化形状。这里的羽化是纯线性渐变,可以使用S 形非线性对比度操作符进一步调整,以多种不同的方式使其看起来更平滑、更锥形。您还可以使用模糊羽化图像,使用相同的方法在模糊仅 alpha 通道之前添加透明虚拟像素。这会为图像生成更柔和的羽化,并使图像的角明显圆润。
|
![]() |
-level
”操作(仅调整透明度通道)确保边缘变得完全透明,而不是仅半透明。但是,由于模糊生成的类 S 形曲线,它在实际边缘处急剧下降到零。它在角落也有累加效果,导致角落变圆,而在具有尖锐凹面的形状图像中,它会导致完全透明的像素变成半透明。因此,对于形状,您可能需要针对原始图像屏蔽结果(使用Dst-In 合成)。但是,对于矩形缩略图,结果令人满意。您可以在分层缩略图中看到使用此类羽化的另一个示例。如果不对模糊羽化进行级别调整,而是可以阈值化“50%
”处的模糊 alpha 通道,以便为上述缩略图图像添加伪圆角。
|
![]() |
-blur
”操作在使用较大参数生成较大圆角时可能会变得非常慢。因此,不建议在较大范围内使用这种圆角方法。对于更不寻常的模糊边缘效果,您可以在 alpha 通道上使用径向模糊。
|
![]() |
|
![]() |
圆形和形状的角
虽然对软模糊边缘(见上文)进行阈值化会生成适合 GIF 布尔透明度的圆角,但它不会生成平滑的“抗锯齿”角。生成具有圆角或任何其他形状的图像的正确方法是实际上使用所需形状的蒙版剪切每个角。以下方法来自 Leif Åstrand <leif@sitelogic.fi>,它将完整的图像蒙版相乘以生成适当的结果。
|
![]() |
|
![]() |
Red
”),而不是使它们透明。
|
![]() |
![]() ![]() |
对于 IM v6.6.6-5 之前的版本,最后一个示例将失败,因为“-flip ”和“-flop ”操作符无法正确处理虚拟画布偏移。 |
|
![]() |
撕裂的纸张边缘
Leif Åstrand <leif@sitelogic.fi> 贡献了以下 IM 代码,以生成看起来像是从纤维纸(如报纸)上撕下来的边缘…
|
![]() |
|
![]() |
添加阴影
“-shadow
”操作符使任何形状图像的阴影生成变得容易。例如,这里我在缩略图上添加了一个半透明的有色阴影。
|
![]() |
但是您也可以轻松创建柔软模糊的阴影。
|
![]() |
-background
”颜色,因为这些格式不处理半透明颜色。警告,虽然上述方法适用于单个缩略图,但当您想要将多个缩略图分层叠加在彼此之上时,通常会失败。原因是阴影不会像普通图像那样累积在一起。要了解如何处理来自多个分层图像的阴影,请参见阴影层。添加一些厚度
为图像或形状添加厚度看起来有点像添加硬阴影(见上文),但并不完全相同,需要一些额外的工作才能正确完成。这实际上非常棘手,因为我们创建了图像的有色蒙版,然后将其复制多次并分层在原始图像下方(使用“DstOver
”合成),并增加偏移量以赋予图像厚度。
|
![]() |
\( +clone ... \)
”都会在图像中向南偏东南方向添加一个额外的像素。此外,由于不涉及半透明像素(至少对于矩形图像而言),因此您可以对结果使用 GIF 图像格式。此技术的最大问题是难以将厚度指定为可变参数或在不同角度指定,除非您编写特定的脚本来添加厚度。此外,厚度倾斜部分的边缘没有抗锯齿,因此有很大的改进空间。类似宝丽来的缩略图
您可以使缩略图图像看起来像一张宝丽来照片,为其添加阴影,甚至稍微旋转一下,使其看起来像是放在桌子上。
|
![]() |
IM v6.3.1-6 中添加了上述更复杂的版本,作为“-polaroid ”变换操作符。例如…
|
![]() |
您甚至可以添加“-caption ”,设置您自己的阴影颜色,指定您自己的旋转(或根本不旋转)。
|
![]() |
|
![]() |
![]() ![]() |
上面示例中的“ `magick ...` ”嵌入命令生成一个从 -15 到 +15 的随机浮点数。有关将 IM 作为数学计算器使用的更多信息,请参见FX 表达式。另一种方法是将随机数分配给 shell 变量,然后将它们替换到上述命令中。 |
LightSteelBlue
”颜色。
|
![]() |
|
![]() |
- 框架已硬编码到上述内容中,并且取决于缩略图图像的大小。在实际应用中,框架可以移动到缩略图生成阶段,而不是在上述照片拼版中。
- 由于“
-rotate
”还会扩展画布的大小,因此除非使用“-gravity center
”位置的偏移量放置图像,否则添加图像的位置会发生变化。 - 最后,不断旋转背景框架在质量方面不是一个好主意。旋转已经旋转的图像会比在叠加之前对每个单独的图像进行一次旋转,给结果带来更多像素级别的失真。
框架技术
在这里,我们将了解一些高级框架技术,这些技术利用了对 IM 工作原理的一些非常高级的知识来实现所需的结果。自框架(外部)
自框架是一种可用于为图像设置框架的技术,使用图像本身生成框架颜色和图案。也就是说,添加的框架不是固定的,而是变化以大致匹配要加框的图像。您可以通过两种方式执行此操作。扩展原始图像以创建外部框架,或使用实际图像本身的一部分创建内部框架。例如,如果我们在叠加原始图像之前放大图像并将其调暗,我们将获得一个非常漂亮的框架。
|
![]() |
![]() ![]() |
除了使用色阶调整来使框架图像变亮(或变暗)之外,使边框颜色更浅或更深的另一种方法是使用色彩着色框架,例如…… " -fill white -colorize 30% " |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
imageborder
”使自框架图像更容易,边框由原始图像的模糊放大或某种形式的虚拟像素设置定义的内容生成。自框架(内部)
我们无需放大图像来添加新边框,而是可以将图像本身的部分变成边框。我们已经看到了一些在图像本身内部添加框架的技术。“凸起按钮”和“气泡按钮”技术使用“-raise
”运算符来实现这一点。在这里,我们生成原始图像的更亮更模糊的版本,然后使用也从原始图像生成的蒙版进行叠加。然后添加一个白色边缘以将该更亮更模糊的版本与图像的中心未修改部分隔开。
|
![]() |
|
![]() |
VividLight
”合成与框架蒙版图像,以更好地保留主要颜色。
|
![]() |
HardLight
”合成,它不会增强主要颜色,以及一个模糊的框架灯光蒙版。
|
![]() |
![]() ![]() |
某些灯光合成方法可能要求您在合成它们之前交换图像才能获得正确的灯光效果。 |
简单边框叠加
一种简单的框架类型是创建一个花哨的框架或形状图像,您可以在其中放置图像,位于框架下方。例如,这里我们生成一个比我们的图像略大的简单框架,并带有一个花哨形状的孔。该形状是从“WebDings
”字体(字符“Y
”)中提取的,但还有许多可能的来源可以用于图片框架的花哨形状。
|
![]() |
您还可以选择使用阴影效果为框架添加一些深度。
|
![]() |
现在我们有了简单的叠加框架,我们可以使用“DstOver ”合成将图像底层放置在框架下方,位于中心位置。
|
![]() |
magick thumbnail.gif autumn_leaves.png +swap \ -gravity center -compose DstOver -composite \ border_leaves.gif |
![[IM Text]](thumbnail.gif)

![[IM Text]](../images/autumn_leaves.png)

![[IM Text]](border_leaves.gif)
DstOver
”将第二个主图像“放在”框架下方。这样,框架决定了图像的最终大小,而不是原始图像。但是,这样做也会丢失主图像具有的任何元数据(出于相同的原因)。如果您确实想要保留缩略图的元数据(例如标签和注释,如版权信息),那么最好的方法是填充缩略图以使其与框架大小相同,然后使用默认的“Over
”合成来叠加框架。这样,缩略图就是“目标”图像,并且其图像元数据将被保留。徽章叠加示例
这是一个更复杂的预先准备好的叠加示例,这次使用正确大小的图像(使用 extent 作为裁剪方法),来自 IM 论坛讨论合成叠加和蒙版。请注意,图像本身没有失真,只是稍微变亮和变暗,切出一个圆圈并添加阴影,所有这些都在一个叠加图像中。如果这是一个真正的徽章或“玻璃气泡”,那么图像也应该稍微失真一点(可能使用桶形失真),但它在不需要这种失真的情况下也能很好地工作。有关“徽章”示例的下一步,请参见使用蒙版和绘制的徽章,它在徽章外部添加了背景透明度。蒙版和绘制技术
在许多情况下,您不仅希望在图像周围叠加方形边框,还希望将图像边缘剪切到透明度。为此,您通常需要至少使用两张图像。一个是包含您要添加到现有图像的颜色、阴影和高光的蒙版叠加。另一个图像包含您想要从原始图像中删除的部分。这两张图像可以通过两种不同的方式应用。您可以先“蒙版”以删除图像中不需要的部分,然后叠加框架,或者您可以叠加框架,然后将原始图像和叠加颜色的不需要的部分蒙版到透明度。您使用哪种方法至关重要,并且所涉及的图像将针对特定技术而设计。您不能以错误的顺序使用一种方法的图像,否则事情将无法正常工作。例如,让我们创建形状更复杂的边框,但这次不用担心设置背景。
|
![]() |
为了使它更有趣,给这个“模糊”边框添加一些随机的颜色。
|
![]() |
好的,我们有了边框,但我们仍然需要一种方法来定义什么应该代表边框的外部和内部。基本上我们需要一个蒙版来定义这两个区域。
|
![]() |
magick thumbnail.gif -alpha set -gravity center -extent 120x100 \ border_ellipse_mask.png -compose DstIn -composite \ border_ellipse_red.png -compose Over -composite \ border_mask_paint.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](border_ellipse_mask.png)

![[IM Output]](border_ellipse_red.png)

![[IM Output]](border_mask_paint.png)
|
![]() |
|
![]() |
圆角边框
如您所见,蒙版并绘制技术可用于向图像添加额外的颜色或“绒毛”,也可用于移除部分,以塑造最终图像。这为我们提供了一种向图像添加圆角的替代方法。IM“-draw
”运算符带有一个“roundrectangle
”方法,可用于在图像周围提供一个有趣的框架。但是,您需要调整此绘制方法的尺寸以匹配图像。IM确实提供了提取方法,甚至可以根据图像大小进行数学计算。定位矩形的位置坐标是用于定义矩形所用笔划宽度的精确“中心”(它可以是浮点数)。此外,它以“像素坐标”给出(参见像素与图像坐标),这意味着值1,1指的是从顶部和左侧边缘开始的第二个像素,但更重要的是,它指的是像素的“中心”,实际上是距离真实顶部和左侧边缘1.5个单位。现在我们将使用笔划宽度(SW)为3,这使得图像在所有方向上都增大3个像素。然后这意味着矩形将定位在距离顶部左侧SW/2 - 0.5
或1.0像素,以及距离底部右侧ImageSize + SW*1.5 - 0.5
或图像大小+4像素的位置。在这里,我们使用IM本身进行这些计算,使用花哨的FX转义生成所需的精确绘制命令。这将保存为Magick矢量图形文件,可在以后的命令中直接由绘制使用。
|
![]() |
![]() ![]() |
如果您能以其他方式(使用shell或其他API语言包装器)计算出图像大小,则可以将适当的绘制参数直接替换到后续示例中,而不是使用FX数学表达式。基本上,上述方法使整个过程独立于缩略图的实际大小。任何其他方法,包括直接硬编码,也是可以接受的。 |
magick thumbnail.gif -border 3 -alpha transparent \ -background none -fill white -stroke none -strokewidth 0 \ -draw "@rounded_corner.mvg" rounded_corner_mask.png magick thumbnail.gif -border 3 -alpha transparent \ -background none -fill none -stroke black -strokewidth 3 \ -draw "@rounded_corner.mvg" rounded_corner_overlay.png |
![[IM Text]](rounded_corner_mask.png)
![[IM Text]](rounded_corner_overlay.png)
|
![]() |
|
![]() |
使用蒙版和绘制的徽章
这是一个更复杂的“蒙版并绘制”示例,它是根据前面徽章覆盖示例中使用的图像开发的。这两个图像的生成是“伪造”的,并在IM论坛合成覆盖和蒙版中进行了讨论。理想情况下,这两个图像应该一起开发。
magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_mask.png -compose DstIn -composite \ badge_shading.png -compose Over -composite \ badge_trans_bg.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](../images/badge_mask.png)

![[IM Text]](../images/badge_shading.png)

![[IM Text]](badge_trans_bg.png)
绘制和蒙版技术
您可以使用一组不同的图像,首先覆盖额外的颜色,然后再蒙版出背景,而不是“先蒙版后绘制”。也就是说,您可以执行“先绘制后蒙版”。也就是说,您将获取您的图像,并覆盖边框,这不仅设置了所有最终的边框颜色,还蒙版并着色了原始图像外部的一些或所有部分。然后,您使用单独的“外部”或“剪切”蒙版来移除结果图像中所有不需要的部分。另请注意,“覆盖”和“蒙版”图像都分别定义了边框的内边缘和外边缘。因此,一个图像无法在单个图像中完全定义整个边框,这可能使其使用起来有点困难。但是它可能更易于实现。例如…
magick -size 120x90 xc:none -fill black -stroke black -strokewidth 0 \ -draw 'ellipse 45,45 55,37 0,360' \ -channel RGBA -negate -blur 0x3 +channel \ \( granite: -auto-level -blur 0,0.7 \) \ -compose ATop -composite border_paint.png magick -size 120x90 xc:none -fill black -stroke black -strokewidth 5 \ -draw 'ellipse 59,45 56,40 0,360' border_mask.png magick thumbnail.gif -alpha set \ border_paint.png -compose Over -composite \ border_mask.png -compose DstIn -composite \ border_paint_mask.png |
![[IM Output]](thumbnail.gif)

![[IM Output]](border_paint.png)

![[IM Output]](border_mask.png)

![[IM Output]](border_paint_mask.png)
页面卷曲角
Fred Weinhaus创建了一个名为PageCurl的特殊shell脚本,它将使用一些非常复杂的数学方法(在shell中)向现有图像添加简单的页面卷曲。例如…
|
![]() |
-i "pagecurl"
”选项)。
|
![]() ![]() |
pagecurl_overlay.png
”和“pagecurl_mask.png
”所示。输入图像本身无关紧要,因为我们想要的是蒙版图像。“页面卷曲”结果只是使用特殊的“null:
”图像文件格式丢弃。
|
![]() |
-gravity
”设置确保两个覆盖图像位于右下角。特殊的定义设置“compose:outside-overlay=false
”将防止蒙版图像擦除未被较小图像覆盖的图像部分。有关完整说明,请参见外部覆盖设置。如果您想将其应用于大量图像,可以使用“magick mogrify
”,使用涉及使用“-draw
”执行Mogrify Alpha合成的特殊技术。但是,这种合成方法不理解特殊的定义设置,因此它仅适用于大小相同的图像、覆盖和蒙版。
pagecurl -e 0.5 -i /tmp/pagecurl {one image} null: magick mogrify {magick mogrify -format and -path options} -alpha set \ -draw 'image Over 0,0 0,0 "/tmp/pagecurl_overlay.png"' \ -draw 'image DstIn 0,0 0,0 "/tmp/pagecurl_mask.png"' \ {all images to be pagecurled}... |
花哨的角叠加
这里我们将更深入地了解如何使用“双重蒙版”技术以不同的方式修改图像的不同区域,而不是对整个图像应用单个大型蒙版或框架。在本例中,我们将只对角部进行双重蒙版。其余的边框(匹配)将单独添加。![[IM 输出]](../images/fancy_orig.gif)
![[IM 输出]](../images/fancy_sub.gif)
![[IM 输出]](../images/fancy_add.gif)
|
![]() |
![]() ![]() |
请注意,为了保留正在添加的透明边框,您必须将“-compose ”设置设置为“Copy ”,而不是默认的“Over ”。如果不这样做,则透明度将被接下来添加的边框颜色填充,在本例中为“黑色”。有关详细信息,请参见边框运算符。 |
使用绘制和蒙版的徽章
之前在徽章叠加和徽章蒙版和绘制中看到的相同徽章图像处理也可以通过绘制然后蒙版来执行。在这里,我们首先将所有颜色和阴影绘制到图像上,然后屏蔽图像的最终透明度。
magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_paint.png -composite badge_shape.png -compose DstIn -composite \ badge_paint_mask.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](badge_paint.png)

![[IM Text]](badge_shape.png)

![[IM Text]](badge_paint_mask.png)
照明蒙版技术
玻璃泡泡按钮
缩略图处理的下一个复杂层次是应用非常复杂的灯光效果。这里的棘手之处不在于将灯光效果应用于图像,而在于生成适当的阴影效果。例如,使用水下效果,您可以为缩略图提供非常复杂的阴影效果,使其看起来像被“玻璃泡泡”包围。此外,这在具有圆角的缩略图上效果更好。让我们为我们的缩略图图像生成一个圆角蒙版,使用纯灰色。
|
![]() |
|
![]() |
|
![]() |
但是,这可以更进一步,因为我们还可以直接将阴影效果添加到此灯光蒙版中。但是添加的颜色必须是纯黑色,并且您需要确保选择的灯光效果合成将使图像在灯光蒙版为黑色时完全变黑。但是,这实际上是通常向图像添加阴影效果的方式,因此您可以直接将阴影添加到“灯光效果蒙版”中,一切都会好起来的!添加灯光“耀斑”也是如此,但仅对耀斑叠加使用白色像素。从本质上讲,“灯光效果图像”实际上可以将两个蒙版和绘制图像合并回单个图像。正如您将在下一个示例中看到的。
使用灯光效果的徽章
使用使用蒙版和绘制的徽章技术中的图像,我将它们应用于纯灰色画布图像,以便快速生成“蒙版灯光效果”图像,实际上,我也可以同样轻松地使用其他样式的蒙版(使用绘制和蒙版的徽章)。然后我将单个蒙版图像应用于缩略图,以再现所需的结果。
# merge "mask 'n' paint" images with a gray image, # to create a "lighting mask" magick -size 90x90 xc:gray50 -alpha set \ badge_mask.png -compose DstIn -composite \ badge_shading.png -compose Over -composite \ badge_lighting.png # Apply the single "lighting mask" magick thumbnail.gif -alpha set -gravity center -extent 90x90 \ badge_lighting.png \ \( -clone 0,1 -alpha Opaque -compose Hardlight -composite \) \ -delete 0 -compose In -composite \ badge_final.png |
![[IM Text]](thumbnail.gif)

![[IM Text]](badge_lighting.png)

![[IM Text]](badge_final.png)
具有失真的蒙版图像...
更令人难以置信的是,由于阴影颜色只是一个灰度图像,您可以将灯光效果压缩到一个颜色通道和 alpha 通道蒙版中。然后,这可以用来释放两个颜色图像通道以用于其他图像处理效果!也就是说,您可以将其他内容存储到单个“蒙版图像”中。具体来说,您可以将失真效果添加到同一个蒙版图像中!有关此内容的更多信息,请参见统一失真图像,它正是这样做的!一种终极蒙版图像。使用边缘图像进行框架
![[IM 图像]](../images/oak_frame_sample.jpg)
框架边缘图像
有许多类型的图像可用于为图像设置框架。例如,这是一个“带金色装饰的细黑色”框架,它是根据 Michael Slate <slatem_AT_posters2prints.com>提供的图像修改而成的。有两个图像,提供两种不同的灯光效果,一个用于顶部和左侧边缘,另一个用于底部和右侧边缘。但是图像长度上的颜色没有变化。因此,您可以平铺或拉伸此框架以生成所需的长度。类似的一组框架部件是这些“细装饰金色”可平铺边框图像。 由于这些图像包含一些精细的细节,您不能简单地拉伸图像到所需的长度。您也不能仅仅矩形旋转这些片段来生成其他边缘片段,因为这样做会导致精细细节的阴影错误。但是,对角线置换扭曲应该可以获得其他边缘的正确阴影。在查看结果时建议格外小心,确保图像所有四边的整体阴影和精细细节阴影都正确。最后,框架图像可能仅包含一个可以用于生成所有框架边缘的单个图像,例如这个“竹子”平铺框架图像。只需要一个图像的原因是,框架没有特定的“内侧”或“外侧”。虽然框架确实具有整体和精细细节的照明效果,这要求您再次注意如何旋转/翻转/置换图像以生成其他边缘。此框架更大的问题是,如果只是简单地平铺它,宏观细节会变得非常规则,因此您可能需要随机化平铺偏移,甚至随机化拼接在一起的片段的长度,以使其看起来更自然。稍后将详细介绍。如您所见,框架图像可以有多种样式,在生成其他缺失的边缘图像时,必须小心地以正确的方式(关于照明图像)处理所选的边缘图像。加长框架片段
现在,在任何使用这些框架图像的情况下,都需要创建更长的片段来覆盖图像尺寸的长度。这只有两种基本方法。您可以使用调整大小(不保留纵横比)简单地拉伸框架图像,以获得正确的长度。这适用于上面显示的第一组片段,这些片段没有内部细节,但不适用于任何其他提供的框架图像。基本上,它会扭曲内部细节,并可能分散最终图像的外观。但是,平铺的其他加长方法可以用于任何具有重复图案或细节的框架图像,这与上面提供的所有图像都一致。如果您正在创建自己的框架片段,请务必确保平铺正确匹配,并且达到像素边界,以确保框架图像具有统一的颜色和细节的正确循环。如果不这样做,您可能会在平铺之间获得人造外观的接缝,由于平铺的重复而变得明显。在现实世界中,画框师在将片段拼接在一起以制作更长的片段时也存在同样的问题。基本上,很容易得到两种不同的木材色调或非常不同的木纹图案,当“燕尾榫”连接在一起时,会使接缝非常明显。所以,您并非孤军奋战。 “竹子”框架图像需要平铺。虽然由于细节仅限于图像上的小区域,因此您可以获得一些有趣的随机平铺效果,可能需要删除一些随机化的加长和缩短片段。我不会深入探讨这一点,而是将其留给有兴趣的人作为练习。对于我们的示例,并且因为它适用于几乎所有框架图像,我将使用一种简单的恒定平铺方法来生成所需的更长的边缘长度。过于简单的附加
我们可以通过将其平铺到正确的长度,然后附加图像,来加长上面的简单“竹子”框架。平铺是通过特殊的平铺画布图像生成器“tile:
”来完成的,用于平铺正在读取的图像。
|
![]() |
|
![]() |
扩展的叠加框架
此外,您可以通过将框架扩展到原始图像的边界之外来使这种类型的边缘框架看起来更好。这在“家园甜蜜家园”类型的图片中经常看到。要执行此操作,您需要先将原始图像放大,并留出大量额外的空间,以便将更长的框架片段覆盖到其中。
magick thumbnail.gif -alpha set -bordercolor none -border 34 \ \( -size 144x14 -tile-offset +30+0 tile:bamboo.gif -transpose \) \ -geometry +20+10 -composite \ \( -size 144x14 -tile-offset +45+0 tile:bamboo.gif -transpose \) \ -geometry +154+0 -composite \ \( -size 178x14 -tile-offset +60+0 tile:bamboo.gif \) \ -geometry +0+20 -composite \ \( -size 178x14 -tile-offset +0+0 tile:bamboo.gif \) \ -geometry +10+124 -composite \ frame_overlaid.gif |
![[IM Output]](frame_overlaid.gif)
45 度角接头
更好的解决方案是以某种方式在缩略图周围添加框架图像,以便在框架的每个角点处实际创建一个 45 度接缝。这并不容易,我尝试了许多绘图和蒙版方法,直到我重新发现了一个名为框架,3D 风格边框的神奇运算符。然后解决方案很简单。读取图像,并“-frame ”它,以创建要框架的区域的模板。
|
![]() |
例如…
|
![]() |
|
![]() |
|
![]() |
-tile-offset
”,以消除这种镜像效果。![]() ![]() |
平铺偏移设置在 IM 6.3.9-9 之前的版本中存在问题,即“X”偏移量用于“X”和“Y”偏移量值(给定的“Y”值被忽略)。这意味着在较旧版本的 IM 中,上述示例可能会错误地平铺底部和右侧边缘。 |
|
![[IM Output]](framed_script.png)
frame_edges.tar.gz
”)。此 tar 文件包含脚本和一组框架图像,脚本了解如何处理和使用这些图像。它还在框架和图像主体之间添加了“纸板”边框。