我最近在这个问题:
当我在寻找一种方法来为投影仪演示文稿创建漂亮的标题(没有“图:”)时,我想知道是否可以在 LaTeX 中创建这种效果。
我对 GIMP 的了解目前为止:
我这样做了:
- 在标题所在的位置添加一个白色图层,并将其透明度设置为 50%
- 对图片上要添加标题的位置进行高斯模糊处理 3 添加标题
我可以在 LaTeX 中做到这一点吗?
我有几张图片想要包含在像这样的投影仪演示文稿中,所以如果这个能起作用的话就太好了。
(我尝试过用谷歌图片搜索,但是“latex caption”似乎不太好...即使我过滤了明确的结果)
我的尝试:
\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\setlength\PreviewBorder{2mm}
\usepackage{tikz}
\begin{document}
\begin{preview}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=\linewidth]{foto-martin.jpg}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[white, fill=white!50!transparent] (0,0.05) rectangle (1,0.1);
\node at (0.5, 0.075) {\Huge Martin};
\end{scope}
\end{tikzpicture}
\end{preview}
\end{document}
但我不知道如何使透明度/定位发挥作用。
由于有人建议使用 imagemagick,我尝试了这个:
width=`identify -format %w foto-martin.jpg`; convert -background '#0008' -fill white -gravity center -size ${width}x40 caption:"Martin" foto-martin.jpg +swap -gravity south -geometry +0+10 -composite out.jpg
但我无法为标题和周围框中的文本添加一些填充。
答案1
假设这个问题不是使用 TikZ 在图像上绘图您可以使用键来实现您想要的效果opacity=<value>
,其中值可以是0
(不可见)和1
(完全可见)之间的任何值。
完成 MWE
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=\linewidth]{mushroom}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[white, fill=gray,opacity=0.5] (0,0) rectangle (1,0.15);
\node[opacity=0.5] at (0.5, 0.075) {\Huge Mushroom};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
这是一种使用 ImageMagick 模糊图像并将裁剪版本放置在未模糊图像之上的方法(这需要-shell-escape
或-enable-write18
调用外部程序)。整个过程包装在一个名为的宏中\labelimage{<file name>}{<image width>}{<label text>}
。可以使用设置背景矩形样式image label background/.style
,标签节点使用image label text/.style
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\tikzset{
image label text/.style={
white, font=\sffamily
},
image label background/.style={
white, opacity=0.35
}
}
\newcommand{\labelimage}[3]{
\begin{tikzpicture}
\immediate\write18{convert #1 -blur 0x3 blurred#1}
\node [inner sep=0pt] (original) {\includegraphics[#2]{#1}};
\begin{scope}[
fill=white,
shift=(original.south west),
x=(original.south east),
y=(original.north west)
]
\fill [clip] (0,0.05) rectangle (1,0.25);
\node [inner sep=0pt, anchor=south west] {\includegraphics[#2]{blurred#1}};
\fill [image label background] (0,0.05) rectangle (1,0.25)
node [text opacity=1, pos=0.5, image label text] {#3};
\end{scope}
\end{tikzpicture}
}
\labelimage{martin.jpg}{width=4em}{Martin}
\end{document}