我正在使用pgmagick生成圆形缩略图。我正在使用与讨论的here类似的过程,确实为我生成了一个漂亮的圆形缩略图。但是,我需要在圆角半径周围有一个白色边框。
我最初的方法是创建一个带有透明背景的白色圆圈的新图像,并在其上合成缩略图,让白色圆圈从缩略图下方“突出”并创建边框效果。这是我用来实现该目标的pgmagick代码:
border_background = Image(Geometry(220, 220), Color('transparent'))
drawer = Draw()
drawer.circle(110, 110, 33.75, 33.75)
drawer.fill_color(Color('white'))
drawer.stroke_antialias(False)
border_background.draw(drawer.drawer)
border_background.composite(original_thumbnail, 0, 0, CompositeOperator.OverCompositeOp)
这是“可行的”方法,但是周围的白色边框由于边缘起伏而失真,因此无法生产。如果我把drawer.stroke_antialias(False)拿出来,那就更糟了。
关于使用pgmagick使边框更平滑的任何想法?
最佳答案
我把它作为一个简单的练习,供读者转换为
pgmagick的命令行(请参阅下文)。 pgmagick的基础代码与命令行使用的代码相同。
您可以将圆画得更大一些,然后将其“缩小”大小。通过在调整大小操作期间将边缘与周围的背景进行平均,可以改善圆角的锯齿状外观。
代替
gm convert -size 220x220 xc:none -fill white \
-draw "circle 110,110, 33.75,33.75" \
original.png
做这个:
gm convert -size 880x880 xc:none -fill white \
-draw "circle 440,440, 135,135" \
-resize 25% resized.png
您可以尝试其他尺寸,
确定哪一个最小的满足您的要求,例如,
gm convert -size 440x440 xc:none -fill white \
-draw "circle 220,220, 67.5,65.5" \
-resize 50% resized.png
此命令行在GraphicsMagick(“gm convert”)和ImageMagick(“convert”)上均可使用
查看位于的pgmagick文档
http://pgmagick.readthedocs.org/en/latest/cookbook.html#scaling-a-image尚不清楚pgmagick是否提供“调整大小”。该文档显示“img.scale”,这可能会导致锯齿状的圆圈。在上面的命令行示例中使用“-scale”而不是“-resize”确实会产生相同的锯齿图像。
pgmagick确实允许您指定过滤器类型,如
img.scale((150, 100), 'lanczos')
它应该等效于“-resize”,这就是您想要的。
关于python - 在圆形图像周围生成平滑的白色边框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22845539/