【发布时间】:2019-04-25 07:07:00
【问题描述】:
我遇到了边缘锯齿线的问题(见白线):
如果我减少笔画(从 10 到 4),那没关系,但是线条不够明显(我需要更粗的线条):
我已经设置了$canvas->setStrokeAntialias(true);,但它没有帮助。如果我增加图像分辨率,那么我需要做更大的笔画,最终结果是一样的。我怎样才能获得一个很好的抗锯齿线,它也很粗?
这是我的代码:
$canvas = new \ImagickDraw();
$canvas->setStrokeColor($stroke_color);
$canvas->setFillColor($fill_color);
$canvas->setStrokeWidth($stroke_width);
$canvas->setStrokeAntialias(true);
$canvas->line(....);
$canvas->line(....);
$canvas->line(....);
...
编辑:我也试过this answer + 减少线条的笔划,但结果是一样的。
【问题讨论】:
-
看起来你用
ImageDraw::line绘制每个片段,试试用ImageDraw::polyline。 -
不要添加 setStrokeColor 和 setStrokeWidth。那只会让它更宽。只需使用 setFillColor。默认情况下,描边轮廓是抗锯齿的,因此请移除 setStrokeAntialias。
-
@emcconville,好点子!如果这消除了锯齿状边缘,将尝试。
-
@fmw42 那样的话,如何控制线条的粗细?
-
如果你真的想要粗线条,那么你将需要 setStrokeColor 和 setStrokeWidth。但是请尝试删除 setStrokeAntialias,因为它默认处于启用状态。多段线会更好,因为更少的工作。如果去除线条下方和周围的阴影会发生什么?
标签: php imagemagick imagick