填充图像时如何自动缩小图像?

填充图像时如何自动缩小图像?

我正在做的事情如下:

\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}

在此处输入图片描述

相关内容