如何在用 `tikz` 生成逐渐透明的图片

2020-02-17 21:00发布

想用 `tikz` 产生一个最上方透明度`0`、最下方透明度`100`、逐渐变透明的图片,请问是哪部分的内容?`texdoc tikz,sec23: Transparency` 我大致看了一遍,没找到...

想用 `tikz` 产生一个最上方透明度`0`、最下方透明度`100`、逐渐变透明的图片,请问是哪部分的内容?`texdoc tikz,sec23: Transparency` 我大致看了一遍,没找到满足我要求的 示例图如下: ![](https://pics.latexstudio.net/data/images/202002/b9a3cc64ce87a12.png)
4条回答
论坛 github.com/C
2020-02-17 21:22 .采纳回答
就问题的需求,对 tikz node 直接使用 `scope fading=south` 即可。 ```tex \documentclass{article} \usepackage{tikz} \usetikzlibrary{fadings} \begin{document} \tikz \node[scope fading=south,inner sep=0pt] {\includegraphics{}}; \end{document} ``` 使用 `\pgfdeclarefading` 定义新的 fading 是偏底层的方式,自由度相当高(模仿 `texdoc tikz`, sec. 116.3 的第二个例子) ```tex \documentclass{article} \usepackage{mwe} \usepackage{tikz} \usetikzlibrary{shadings} \begin{document} \newsavebox{\picBox} \savebox{\picBox}{\includegraphics{example-image}} \pgfdeclarefading{fading2} { \tikz\shade[top color=pgftransparent!0, bottom color=pgftransparent!100] (0, 0) rectangle (\wd\picBox, \ht\picBox+\dp\picBox); } \begin{tikzpicture} \pgfsetfading{fading2} {{\pgftransformshift{\pgfpoint{\wd\picBox}{\ht\picBox+\dp\picBox}}}} \node[inner sep=0pt] {\usebox{\picBox}}; \end{tikzpicture} \end{document} ``` ![](https://pics.latexstudio.net/data/images/202002/a7665f480bf56be.png) (抽象程度)介于选项 `scope fading` 和 `\pgfdeclarefading` 之间的方案,还有 `\tikzfading` 和 `\shade`。 ------ 注意,如果插入的是 png 图片,需要去掉其中的 alpha 通道信息。一种方式是使用 imagemagick 提供的 `convert` 命令,参考 http://www.imagemagick.org/Usage/masking/#alpha_remove ``` convert input.png -background white -alpha remove output.png ```

一周热门 更多>