MagickWand C 语言示例这些页面上的程序展示了如何使用 ImageMagick 的 MagickWand API。每个示例都以 C 函数的形式呈现,包含头文件,以便可以将其复制到文件中,然后包含在您自己的 C 项目中。代码是为 Windows 编写的,并使用 MSVC V7 编译,但稍加调整,它也应该在 Linux 上运行。 有些示例展示了命令行 "程序" 以及如何使用 MagickWand 实现等效的输出。所谓 "等效",是指该程序生成的图像与命令行示例相同,但实现方式不一定与 convert 程序完全一致。在某些情况下,只存在一个要复制的命令行示例,而在其他情况下,可能存在 3 或 4 个命令,它们相互依赖,最终产生结果。在大多数情况下,我创建了一个 C 函数来复制所有命令,但代码的每一部分都将显示其与原始命令的关系。 示例中几乎没有错误检查,但您应该在需要的地方添加自己的错误检查。例如,MagickReadImage 函数返回 true 或 false 值,具体取决于读取是否成功,您应该使用类似以下代码进行检查
您应该注意,许多 MagickWand 函数声明为返回布尔结果,但它们始终返回 MagickTrue,因此不值得检查。这在 DrawingWand 命令中尤其如此。例如,即使 DrawSetFont 没有找到您指定的字体,它也会返回 MagickTrue,因为它会将字体设置为您的默认系统字体。 如果您以前没有使用过 MagickWand,您应该从简单的示例开始,例如 不难看出,要将自己的输入文件转换为另一种格式,只需将 "logo:" 替换为您的输入文件名,并将 "logo.jpg" 替换为您想要的输出文件名。 MagickReadImage 函数非常灵活。它可以接受一个网站 URL,该 URL 链接到互联网上的某个图像,或者可以使用 "xc:" 文件名约定生成一个纯色画布。例如,"xc:red" 将创建一个红色画布,而 "xc:none" 将创建一个透明画布。如果您使用 "xc:" 格式,通常会在读取函数之前调用 MagickSetSize,否则您将得到一个 1x1 像素的图像。建议阅读 ImageMagick Formats 页面底部附近的 "伪图像" 和 "内置图像" 部分,了解其他可用的伪文件。 如果您正在决定使用 MagickCore 还是 MagickWand,请先查看上一段中展示的简单示例,然后查看为 MagickCore 编写的等效示例。 我认为您会同意,即使在这个简单的示例中,MagickWand 版本也更容易阅读和编写。 所有这些代码均按 "现状" 提供,不附带任何形式的担保或保证。 每个图像都显示在灰色背景上,以更好地显示透明图像。 以下列出了每个示例中使用的 MagickWand 函数的 索引 使用 Lanczos 滤镜将图像缩小到 50%,并以高质量 JPG 格式保存 将图像的白色背景更改为透明的简单泛洪填充。 稍微复杂一点的泛洪填充(类似于 Masking Simple Backgrounds 中的第三个示例) 使用 剪辑蒙版 限制合成区域 将 *所有* 白色像素更改为透明 - 我们还可以看到巫师的胡须!。 绘制形状:圆形、多边形、圆角矩形、旋转和平移的椭圆、线条 在一个函数中实现八种文本效果 有趣的字体度量! 创建圆角矩形蒙版,类似于 ROUNDED BORDERS 示例。 从输入图像创建可平铺的图像。 Better 3-D Logo Generation 示例 "Gel" Effects 示例 在图像下方添加反射 - 使用 CopyOpacity 将反射淡化为透明。 使用 MagickDistortImage 进行仿射变换的四个示例 使用 PixelIterators 创建灰度渐变 使用 PixelIterators 读取和创建图像,并进行 HSL/HSB 颜色空间转换 将二维图像转换为伪三维图像 Anthony 的倾斜移位示例 更改 logo: 内置图像中的一个像素的颜色 为清除的帧动画添加静态背景 |
如果您有任何意见,请发送至:
或在 ImageMagick 论坛上给我发送私信