我正在做的事情如下:
\begin{tikzpicture}
\node[rectangle, draw=false, line width=0.3mm, inner sep=1.0cm, fill tile image=\@photo] () {};
\end{tikzpicture}
我尝试过平铺、拉伸和过度缩放。它们都不符合我的需求。我希望图像自动缩小到当前矩形的大小。我该怎么办?谢谢!
答案1
在评论中澄清了一些问题之后,似乎实际要求的很简单,就像
\node [inner sep=0pt] (img) at (1,1) {\includegraphics[width=4cm]{example-image}};
但我会将我的其余答案保留在下面,以防其他人感兴趣。
我在这里假设,如果图像的纵横比与节点的纵横比不同,您实际上希望图像平铺。如果您不想要那样,那么我不明白您为什么要使用它fill tile image
,您可以看看 Mark 的回答。
如果你查看手册tcolorbox
,你会发现,在 的描述下方fill tile image
,有一个带星号的版本,fill tile image*
,它允许你将选项传递给底层\includegrahics
命令:fill tile image*={<options>}{<image filename>}
。因此,如果你有一个具有明确大小的(空)节点,那么你可以将图像的宽度设置为节点的宽度:
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\begin{document}
\begin{tikzpicture}
\node[rectangle, draw=none, line width=0.3mm, minimum size=2.0cm, fill tile image*={width=2cm}{example-image}] () {};
\node[rectangle, draw=none, line width=0.3mm, minimum size=2.0cm, fill tile image*={width=2cm}{example-image-1x1}] at (3,0) {};
\node[rectangle, draw=none, line width=0.3mm, minimum size=2.0cm, fill tile image*={height=2cm}{example-image-10x16}] at (6,0) {};
\end{tikzpicture}
\end{document}
当然,如果你的节点不是空的,并且大小会因为内容而增长,这会变得更加复杂,我的回答就没那么有帮助了。
此外,这将取决于节点和图像的纵横比。对于本例中的方形节点,如果图像的宽度大于高度,则设置宽度。如果高度大于宽度,则设置图像的高度。
答案2
还应该适用于鸭子以外的图像。
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{calc}
\tikzset{path image/.style={
path picture={
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{south west}}%
{\pgfpointanchor{path picture bounding box}{north east}}
\pgfgetlastxy\tmpw\tmph
\pgftransformshift{\pgfpointanchor{path picture bounding box}{center}}
\pgftext{\includegraphics[width=\tmpw,height=\tmph]{#1}}%
}}}
\begin{document}
\begin{tikzpicture}
\node [draw, path image=duck.jpg] at (0, 0) {A};
\node [draw, path image=duck.jpg] at (0,-1) {AB};
\node [draw, path image=duck.jpg] at (0,-2) {ABCDEF};
\node [draw, align=center, path image=duck.jpg] at (0,-3) {ABC\\DEF\\GHI};
\node [draw, align=center, path image=duck.jpg,
minimum width=1cm, minimum height=2cm] at (0,-5) {};
\end{tikzpicture}
\end{document}