Mathematica:将文本添加到导入的图像/图形作为标签

时间:2013-03-19 19:52:14

标签: image text wolfram-mathematica label graphic

我已经搜索了好几个小时......但我不知所措!

我在Mathematica中导入了一个图像 - >尺寸为2x2cm,72DPI。

我试图用文本字符串“标记”图像: - 有字体颜色“fontColor” - 具有黑色轮廓,因此它与任何底层颜色形成对比 - 位于导入图像的右下角 - 尺寸为h / w(cm) - 可选择位于带有白色背景的文本框中

这是我的到来:

MathCode:

image = Import["myimg.jpg"];
inchFactor = 2.54;(* 1 inch = 2.54cm *)
docRes = 72;
pixelConverter = docRes/inchFactor/2;

myText = First[
   First[ImportString[
     ExportString[
      Style["glorious label string here", Bold, FontSize -> 15, 
       FontFamily -> "Verdana"], "PDF"], "PDF", 
     "TextMode" -> "Outlines"]]];

myTextGraphic = 
  Graphics[{EdgeForm[Directive[Black, Thickness[0.01]]], White, 
    myText}, Background -> White, 
   ImageSize -> {10*pixelConverter, 2*pixelConverter}];
myTextGraphic = Rasterize[myTextGraphic];

combined = SetAlphaChannel[myTextGraphic, myTextGraphicAlphaVersion];

我找到了上面的方法(PDF包装器),用于文本字符串的黑色轮廓。

我正在使用只使用黑/白的版本将AlphaChannel添加到文本字符串的图形中。

然后我尝试将图像与叠加层结合起来。

由于这些似乎与输出的图像尺寸和定位无关,我很乐意寻求帮助。 没有必要“修复”那些凌乱的代码。

也许您可以指向我的脚本或教程 - 我真正想要的是添加文本字符串或文本框并将其放置到底层图像。

非常感谢!

2 个答案:

答案 0 :(得分:1)

现在已经很晚了,所以这只是解决方案的开始,但这是一种向图像添加文本标签的简单方法:

lbl = Graphics[Text[Style["Bottom", Red, Large]]]

以大字体红色创建文本“Bottom”的图像。接下来,给出一个名为img1

的图像
ImageCompose[img1,lbl]

将文本放在图像的中心。 ImageCompose具有允许您将第二个图像(即标签)定位在第一个图像上的选项。您可以将标签放在彩色背景上,如下所示:

lbl = Graphics[Text[Style["Bottom", Red, Large, Background -> Blue]]]

我还没想到,如何用彩色轮廓书写文字。

答案 1 :(得分:1)

看看这个。还有其他方法。

img = Import["http://todayinsci.com/H/Hilbert_David/HilbertDavidThm.jpg"];

Column[{
  img,
  Text[Style["Professor Hilbert", Red]]
}]

imgCtr = Round[ImageDimensions[img]/2];

overlay = Framed[Graphics[{Text[Style["Professor Hilbert", Red, 9], imgCtr]},ImageSize-> {66, 14}], FrameStyle -> Green]

Overlay[{img, overlay}, Alignment -> Center]