我正在使用 C# 和Magick.Net对图像进行注释,如下所示:
var text = "Variable text";
var img = new MagickImage("image.jpg");
img.FontPointsize = 50;
img.FillColor = new MagickColor(Color.White);
img.Annotate(text, Gravity.Northwest);
注释有效,但文本并不总是易于阅读,因为它可以与图像融合。
ImageMagick 手册有一个完整的部分建议解决方案:
概述标签
convert dragon.gif -gravity south \ -stroke '#000C' -strokewidth 2 -annotate 0 'Faerie Dragon' \ -stroke none -fill white -annotate 0 'Faerie Dragon' \ anno_outline.jpg
绘制暗盒
convert dragon.gif \ -fill '#0008' -draw 'rectangle 5,128,114,145' \ -fill white -annotate +10+141 'Faerie Dragon' \ anno_dim_draw.jpg
(只有在没有其他方法的情况下我才会使用此方法,因为它需要明确定义矩形的宽度和高度。)
底色框
convert dragon.gif -fill white -undercolor '#00000080' -gravity South \ -annotate +0+5 ' Faerie Dragon ' anno_undercolor.jpg
复合标签
convert -background '#00000080' -fill white label:'Faerie Dragon' miff:- |\ composite -gravity south -geometry +0+3 \ - dragon.gif anno_composite.jpg
自动调整大小的字幕
width=`identify -format %w dragon.gif`; \ convert -background '#0008' -fill white -gravity center -size ${width}x30 \ caption:"Faerie Dragons love hot apple pies\!" \ dragon.gif +swap -gravity south -composite anno_caption.jpg
花式标签
convert -size 100x14 xc:none -gravity center \ -stroke black -strokewidth 2 -annotate 0 'Faerie Dragon' \ -background none -shadow 100x3+0+0 +repage \ -stroke none -fill white -annotate 0 'Faerie Dragon' \ dragon.gif +swap -gravity south -geometry +0-3 \ -composite anno_fancy.jpg
以上任何一种方法对我来说都可以。但是,我似乎找不到 .Net API 中公开的所需功能。例如,我在调用 Annotate 之前尝试设置 BackgroundColor。这没有产生任何效果:
img.BackgroundColor = new MagickColor(Color.Black);
我想要一些关于如何使用 Magick.Net 实现任何增强注释文本可读性的方法的指示。