python - 如何使用 Imagemagick 或 PIL 绘制高质量的图像描边(边框)?
问题描述
我试图将图像描边(边框)绘制到我的 png 图像。
(*预期 19px 笔触图层样式由 Photoshop 生成)
我从 imagemagick 论坛找到了有用的脚本。(imagemagick话语)
convert source.png -background '#2a7940' -alpha background -channel A -blur 9x11 stroked.png
但我最好的尝试与 Photoshop 的结果相去甚远。
我尝试了 Radius*Sigma 的许多组合,但它似乎是模糊技巧的最佳结果..(这个 -blur 9x11)
问题
* 我可以从 Imagemagick 或 PIL 或其他 CLI 工具中获得更好的图像描边吗?
* 如果是这样,如何..?
非常感谢您阅读这个问题。
解决方案
当您需要使用 ImageMagick 创建的效果的边缘干净时,您可以将输入图像的大小加倍,运行操作,然后将其调整回其原始输入大小。运行这些操作需要更长的时间,但结果可以大大改善。这是一个示例命令...
convert bomb-source.png -write mpr:in -resize 200% \
-channel A -morphology dilate disk:38 +channel \
-fill green -colorize 100 -resize 50% mpr:in -composite result.png
该命令首先读取输入图像并将副本存储在名为“mpr:in”的内存寄存器中。
然后它将输入的大小调整为 200%,并使用“-morphology”将形状扩大约 38 个像素。在图像缩小回其输入大小后,这将达到大约 19 个像素。
接下来,它将新形状着色以使其变为绿色并将其大小调整为 50%,即恢复为原始大小。
该命令通过带回原始图像的“mpr:in”副本并将其合成到修改后的绿色部分来完成。
增加大小,处理它,并在修改后减小它称为“超级采样”。这是一种使边缘更平滑的常用技术,但它是以速度为代价的。
推荐阅读
- php - 查询缓存类型在 X-cart 应用程序中显示为 ON/not
- javascript - 将元数据添加到 Stripe 客户对象
- sql - T-SQL 获取连续行
- reactjs - 如何让 create-react-app 在脚本路径中包含前导点?
- c++ - 使用 Windows Sensor API 从多个传感器检索信息
- angular - 包含异步管道的 Angular 组件:屏幕上的值从不刷新。如何处理?
- java - 如果他重生,我想传送玩家,但它不起作用,玩家不会被传送
- gatsby - 盖茨比和内容查询
- loops - Ansible selectattr + map + list 返回空结果
- java - “错误”:{“代码”:400,“消息”:“未设置识别音频。”,“状态”:“INVALID_ARGUMENT”}}