![为椭圆形裁剪图像添加边框](https://linux22.com/image/457866/%E4%B8%BA%E6%A4%AD%E5%9C%86%E5%BD%A2%E8%A3%81%E5%89%AA%E5%9B%BE%E5%83%8F%E6%B7%BB%E5%8A%A0%E8%BE%B9%E6%A1%86.png)
考虑一下代码
\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}
答案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}