我正在使用 TikZ 在包含的图像上绘图\includegraphics
。我希望能够根据下面包含的图像的像素颜色来控制线条、文本、节点等的颜色。
查看 TikZ 间谍库,似乎可以访问所包含图像的各个像素。例如,参见此问题/答案。
我的最终目标是能够在图像上绘制一条线,该线的颜色会根据图像的像素颜色而改变。也许有必要为此使用 PGF 库?
答案1
<hand waving>
您可以根据 中包含的图像中像素的颜色为像素着色\includegraphics
。至少,您可以间接地做到这一点。然而,这并不遵循 PGF/Ti钾Z 可以访问有关图像中颜色的信息。我怀疑它不能。相反,我猜它会告诉后端驱动程序如何根据图像中像素的颜色为像素着色。或者类似的东西...
</hand waving>
例如,以下是标准tiger
图像的四个渲染图。这些渲染图使用 pdfTeX 渲染,并在 GNU/Linux 上的 Okular 中查看。如果代码使用其他引擎编译和/或在其他 PDF 查看器和/或在其他系统上查看,它们可能会看起来不同。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{scope}[blend mode=difference]
\node {\includegraphics{tiger}};
\shade [bottom color=blue, top color=green, middle color=magenta] (current bounding box.north west) rectangle (current bounding box.south east);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[blend mode=screen]
\node {\includegraphics{tiger}};
\shade [bottom color=blue, top color=green, middle color=magenta] (current bounding box.north west) rectangle (current bounding box.south east);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[blend mode=exclusion]
\node {\includegraphics{tiger}};
\shade [bottom color=blue, top color=green, middle color=magenta] (current bounding box.north west) rectangle (current bounding box.south east);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[blend mode=color dodge]
\node {\includegraphics{tiger}};
\shade [bottom color=blue, top color=green, middle color=magenta] (current bounding box.north west) rectangle (current bounding box.south east);
\end{scope}
\end{tikzpicture}
\end{document}