为椭圆形裁剪图像添加边框

为椭圆形裁剪图像添加边框

考虑一下代码

\documentclass{book}
\usepackage{graphicx}
\usepackage[abs]{overpic}
\usepackage{tikz}
\definecolor{Gold}{RGB}{228,168,73}

\begin{document}
\thispagestyle{empty}
    \begin{center}
        \begin{tikzpicture}
            \clip (0,0) ellipse (4.25cm and 5.5cm);
            \node at (0,0) {\includegraphics[scale=2]{example-image-a}};
        \end{tikzpicture}
    \end{center}
\end{document}

生成裁剪后的图像:

在此处输入图片描述

问题:如何在椭圆形裁剪图像周围添加金色边框(指定厚度)?我正在使用xelatex编译。

谢谢。

答案1

此代码将在节点内绘制框架。

请注意,剪辑中线条的一半宽度已经丢失。

\documentclass{book}
\usepackage{graphicx}
\usepackage[abs]{overpic}
\usepackage{tikz}
\definecolor{Gold}{RGB}{228,168,73}

\begin{document}
    \thispagestyle{empty}
    \begin{center}
        \begin{tikzpicture}
            \clip (0,0) ellipse (4.25cm and 5.5cm);
            \node at (0,0) {\includegraphics[scale=2]{example-image-a}};
            \draw[line width=10pt, Gold] ellipse (4.25cm and 5.5cm); % added <<<<<<<<<<
        \end{tikzpicture}
    \end{center}
\end{document}

A

答案2

为了避免剪切黄金轮廓,可以使用环境限制剪切路径的范围scope。这可以防止剪切对象的某些部分超出重叠轮廓(由 PDF 查看器/图像转换工具的数值不精确造成)。

save path此外,剪切路径可以定义一次,然后使用和use path选项在其他地方重新使用:

\documentclass{book}
\usepackage{graphicx}
\usepackage[abs]{overpic}
\usepackage{tikz}
\definecolor{Gold}{RGB}{228,168,73}

\begin{document}
\thispagestyle{empty}
  \begin{center}
    \begin{tikzpicture}
      \begin{scope}
        \clip[save path=\myContour] (0,0) ellipse (4.25cm and 5.5cm);
          \node at (0,0) {\includegraphics[scale=2]{example-image-a}};
      \end{scope}
      \draw[line width=5pt, Gold,use path=\myContour];
    \end{tikzpicture}
  \end{center}
\end{document}

答案3

这就是path picture是为此而制作的。有了它,您可以将任意的 TikZ 内容放入路径中,该区域将由颜色fill、图案或阴影填充。

我也在使用低级\pgftext避免内部节点继承任何其他选项从其父路径(例如,该节点也会有金色绘制的边框,尽管我们看不到它,因为它被剪裁了)。

在前面的链接中我也提到了tikzfill包裹它提供了一些将图片放置在路径内的预定义选项。

代码

\documentclass{book}
\usepackage{tikz}
\definecolor{Gold}{RGB}{228,168,73}

\begin{document}
\thispagestyle{empty}
\begin{center}
\begin{tikzpicture}
    \draw[Gold, ultra thick] (0,0) ellipse (4.25cm and 5.5cm) [path picture={
      \pgftext[at=\pgfpointanchor{path picture bounding box}{center}]
              {\includegraphics[scale=2]{example-image-a}}
      % \node at (path picture bounding box.center)
      %    {\includegraphics[scale=2]{example-image-a}};
    }];
\end{tikzpicture}
\end{center}
\end{document}

相关内容