如何让 Tikz 获取图像像素的颜色

如何让 Tikz 获取图像像素的颜色

我正在使用 TikZ 在包含的图像上绘图\includegraphics。我希望​​能够根据下面包含的图像的像素颜色来控制线条、文本、节点等的颜色。

查看 TikZ 间谍库,似乎可以访问所包含图像的各个像素。例如,参见此问题/答案

我的最终目标是能够在图像上绘制一条线,该线的颜色会根据图像的像素颜色而改变。也许有必要为此使用 PGF 库?

答案1

<hand waving> 您可以根据 中包含的图像中像素的颜色为像素着色\includegraphics。至少,您可以间接地做到这一点。然而,这并不遵循 PGF/TiZ 可以访问有关图像中颜色的信息。我怀疑它不能。相反,我猜它会告诉后端驱动程序如何根据图像中像素的颜色为像素着色。或者类似的东西... </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}

老虎变种

相关内容