小编sng*_*juk的帖子

如何用Imagemagick或PIL绘制高质量的图像描边(边框)?

我尝试将图像描边(边框)绘制到我的 png 图像上。 原来的 ph_res
(* Photoshop 预期的 19px 描边图层样式结果)

我从 imagemagick 论坛找到了有用的脚本。(imagemagick 话语

convert source.png -background '#2a7940' -alpha background -channel A -blur 9x11 stroked.png
Run Code Online (Sandbox Code Playgroud)

但我最好的尝试与 Photoshop 的结果相去甚远。 im_res

我尝试了 Radius*Sigma 的多种组合,但它似乎是模糊技巧的最佳结果..(-blur 9x11 对于这个)

问题
* 我可以从 Imagemagick 或 PIL 或其他 CLI 工具获得更好的图像描边吗?
* 如果是这样,如何..?
非常感谢您阅读这个问题。

python imagemagick image-processing python-imaging-library

5
推荐指数
1
解决办法
1773
查看次数

为什么 PIL convert('RGB') 将一些透明变成黑色,而一些变成白色?

我有两个具有透明背景的类似蒙版图像。我想获得图像差异并期望它的值与图像相似一样低。

lenna1.png lenna2.png

但是结果显示在看起来相同的透明区域上存在巨大差异。
(白色表示差异)

diff_res = ImageChops.difference(lenna1, lenna2).convert('RGB')
Run Code Online (Sandbox Code Playgroud)

diff_res

我在某个网站上检查了 lenna1 和 lenna2 图像差异,它说除了边界上的小差异外,图像完全相同。

然后我怀疑 alpha 通道值并将 lenna1、lenna2 转换为 'RGB'。它显示一个人的背景为黑色,而另一个人的背景为白色。

lenna1 = Image.open('lenna1.png')
lenna2 = Image.open('lenna2.png')

converted_lenna1 = lenna1.convert('RGB')
converted_lenna2 = lenna2.convert('RGB')
Run Code Online (Sandbox Code Playgroud)

Converted_lenna1   Converted_lenna2

现在我知道 convert() 默认将透明区域变为黑色。但我还是不明白。

  1. 为什么透明区域之间存在图像差异?
  2. 为什么一些透明图像变成白色,如何制作自己的“将是白色”透明图像?

*我还使用 .putalpha() 测试了相同的 alpha 级别

感谢您阅读这个问题。

python photoshop png image-processing python-imaging-library

3
推荐指数
1
解决办法
3788
查看次数