想用 `tikz` 产生一个最上方透明度`0`、最下方透明度`100`、逐渐变透明的图片,请问是哪部分的内容?`texdoc tikz,sec23: Transparency` 我大致看了一遍,没找到满足我要求的 示例图如下: ![](https://pics.latexstudio.net/data/images/202002/b9a3cc64ce87a12.png)

4 回答4

16
就问题的需求,对 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 效果的图覆盖你的龙骑士图片。 两个办法我都没用过,仅供参考。或许有更方便的办法——等待其他回答。
  • 感谢思路,可惜实力不足 – sikouhjw 2020-02-18 14:32 回复
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 回复
  • 使用示例图片 example-image.png,依然能获得逐渐透明效果 – 论坛 github.com/CTeX 2020-02-18 20:20 回复
0
如果是背景图,可以用其他软件做出来渐变效果放在背景里既可。如果放在文字之上,那就要重新考虑实现了。

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。