提问于:
浏览数:
5443
想用 `tikz` 产生一个最上方透明度`0`、最下方透明度`100`、逐渐变透明的图片,请问是哪部分的内容?`texdoc tikz,sec23: Transparency` 我大致看了一遍,没找到满足我要求的
示例图如下:
![](https://pics.latexstudio.net/data/images/202002/b9a3cc64ce87a12.png)
4 回答
18
就问题的需求,对 tikz node 直接使用 `scope fading=south` 即可。
```tex
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\tikz \node[scope fading=south,inner sep=0pt]
{\includegraphics{<image-file>}};
\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
```
-
非常感谢! – sikouhjw 2020-02-17 21:54 回复
0
你需要的是 fading 效果。如果用 TikZ 的话,我想到两个办法,
1. 用命令 `\pgfdeclaremask`,得尝试用 xelatex 与用 pdflatex 有没有区别。
2. 分两步,先插入你的龙骑士图片,再用具有白色 fading 效果的图覆盖你的龙骑士图片。
两个办法我都没用过,仅供参考。或许有更方便的办法——等待其他回答。
0
在尝试了慕子的方法后,发现一个问题,矢量图才能变透明,位图是无效的,遗憾
回答: 2020-02-19 14:40
龙的图片
![](https://pics.latexstudio.net/data/images/202002/c541b0665688a3e.png)
-
回复 undefined :你要插入的是带 alpha 通道的 png 图片。去掉 alpha 通道信息后,输出正常。我更新了自己的回答。 – 论坛 github.com/CTeX 2020-02-20 01:07 回复
-
回复 undefined :我刚测试了 example-image.png 和 example-image.jpg,都能得到逐渐透明的效果,可是那张龙的图片不行,我把龙的图片传上来吧 – sikouhjw 2020-02-19 14:39 回复
-
0
如果是背景图,可以用其他软件做出来渐变效果放在背景里既可。如果放在文字之上,那就要重新考虑实现了。
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。