TikZ 中的图像部分或全部模糊?
我在 Martin Giese 编写的 pgf-blur 软件包版本 1.01 中看到了一些阴影模糊的示例,但这不是我的意思。是否可以在 TikZ 中对部分或整个图像进行模糊处理,就像在 Adobe Photoshop 中所做的那样?
答案1
也许可以复制原始图片 8 次,添加 50% 的透明度,然后随机移动不同的副本,然后叠加所有内容。
我采纳了他的想法并做了一个例子。
我的例子中的逻辑:
- 取出图像并插入五次。四份副本朝不同方向移动。
- 再次插入,但将其夹到有趣的区域。
代码:
\documentclass[tikz]{standalone}
%\usepackage{luatex85} %if used with lualatex
\usepackage{graphicx}
%Parameters:
%- at position
%- blur parameter
%- image name
\newcommand\blurredimage[3]{
\node[opacity=0.2] at (#1) {\includegraphics{#3}};
\node[opacity=0.2] at (#1+ #2, #2) {\includegraphics{#3}};
\node[opacity=0.2] at (#1+-#2, #2) {\includegraphics{#3}};
\node[opacity=0.2] at (#1+-#2,-#2) {\includegraphics{#3}};
\node[opacity=0.2] at (#1+ #2,-#2) {\includegraphics{#3}};
}
% ----------------------------------------------------------------
\begin{document}
\begin{tikzpicture}
\blurredimage{0.0,0.0}{.2}{mypic}
\begin{scope}
\clip (-3.5,-8) rectangle (-1,-5);
\node[] at (0,0) {\includegraphics{mypic}};
\end{scope}
\end{tikzpicture}
\end{document}
采取图片来自维基百科您将获得以下结果:
为了使其更加灵活,您可以使用模糊因子、不透明度(和位置?)的键值参数。
也许通过在背景图像上使用图案可以获得更好的效果。
要仅模糊区域,您可以用相反的方式进行:插入图像,然后多次添加图像的剪切区域。
答案2
图像模糊本质上是基于像素的操作,因此基于矢量的图表需要被视为光栅化图像。TikZ 或 TeX 无法自行处理此问题。
需要将图像导出、模糊处理,然后带回并用作外部图像,或者使用一些相当复杂的技巧将其作为快照保存到框中并以某种方式丢失矢量图形属性等等。我现在想不出任何可以自动执行此操作的方法,但可以添加一些外部函数调用,以便在外部化后模糊图像。
答案3
这是一个sagetex
解决方案,不用于tikz
模糊 Wikipedia 图片。只需在网上找到一些 Python 代码即可,例如来自这里找到多种处理图像的方法。我选择了模糊和轮廓。
\documentclass{article}
\usepackage{sagetex}
\usepackage{graphicx}
\begin{document}
Here is the images:\\
\includegraphics[width=2in]{Mona.png}
\begin{sagesilent}
from PIL import Image
from PIL import ImageFilter
from PIL.ImageFilter import (BLUR,CONTOUR)
img = Image.open('Mona.png')
img.filter(BLUR).save('MonaBlur.png')
img.filter(CONTOUR).save('MonaContour.png')
result1 = r"\includegraphics[width=2in]{MonaBlur.png}"
result2 = r"\includegraphics[width=2in]{MonaContour.png}"
\end{sagesilent}
\sagestr{result1}
\sagestr{result2}
\end{document}
结果如下所示,运行于计算公式:
编辑:现在来处理部分模糊。从这页面我得到了一些关于裁剪和将裁剪后的图像粘贴到另一幅图像上的说明。我从原始图像中裁剪了手,并将其粘贴到模糊图像的模糊图像上。
\documentclass{article}
\usepackage{sagetex}
\usepackage{graphicx}
\begin{document}
Here is the images:\\
\includegraphics[width=2in]{Mona.png}
\begin{sagesilent}
from PIL import Image
from PIL import ImageFilter
from PIL.ImageFilter import (BLUR,CONTOUR)
img = Image.open('Mona.png')
Copyimg = img.copy()
croppedIm = img.crop((75, 340, 200, 450))
croppedIm.save('cropped.png')
Copyimg.paste(croppedIm, (0, 0))
img.filter(BLUR).save('MonaBlur.png')
img.filter(CONTOUR).save('MonaContour.png')
img2 = Image.open('MonaBlur.png')
img2.filter(BLUR).save('MonaBlurBlur.png')
img2.paste(croppedIm, (75, 340, 200, 450))
img2.paste(croppedIm, (400, 500))
img2.save('box.png')
result1 = r"\includegraphics[width=2in]{MonaBlur.png}"
result2 = r"\includegraphics[width=2in]{MonaContour.png}"
result3 = r"\includegraphics[width=2in]{box.png}"
result4 = r"\includegraphics[width=2in]{cropped.png}"
\end{sagesilent}
\sagestr{result1}
%\sagestr{result2}
\sagestr{result3}
\sagestr{result4}
\end{document}
最后一张是手的裁剪图。它被粘贴在拍摄位置,但现在在模糊的图像上。如果您单击图像(以便近距离查看),您会看到 3 张图片中的第二张中,除了手之外,莫娜的脸是模糊的。
通过使用 Python,您可以访问许多内置命令来处理图像。
答案4
\documentclass{article}
\usepackage{tikz}
\usepackage{calculator}
\begin{document}
\begin{tikzpicture}
\def \r {3} %define uma varivál r ( de raio) para colocar os pontos e distâncias em função dela
\begin{scope}
\foreach \i in {.1,.12, .14, ..., 1}{
\SUBTRACT{1}{\i}{\ii}
\MULTIPLY{\i}{.2}{\oop} %\oop its a random name
\clip (0,0) circle (\ii*\r);
\node[opacity=\oop] at (0,0) {\includegraphics[scale=.215]{![enter image description here}};
}
\end{scope}
\end{tikzpicture}
\end{document}