Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

There are examples of how to make nice circular logos in Calligraphic logo in tikz and Recreating a logo (text around a circle), but I'm looking to mimic the impression with a traditional rubber stamp.

That is, transform a perfect LaTeX logo in a stamp with evident random imperfections, including fading (usual in hand rubber stamps) blur appearance and may be even a little shape distortion. For example, instead of the this image, I want obtain something like this:

MWE

Of course, this is an easy work for The Gimp or another image manipulation program for just one stamp, but for a regular use of stamps with dynamic contents (for example with \today) is preferable a pure LaTeX solution.

Edit: extended question in Toward a Stamper Package

share|improve this question
    
Possible inspiration: the coffee4 package. –  tohecz Jan 31 '13 at 0:20
    
Other possible inspiration: tex.stackexchange.com/a/74107/14500. –  Paul Gaborit Jan 31 '13 at 0:32
    
Not pure TeX, but stretching an image with a transparent & white gradient / pattern and overlaying it should do the job. –  Xavier Jan 31 '13 at 0:48
1  
I was thinking you can rotate a second stamp slightly (e.g. 2 degrees) and overlay it on itself. This might mimic typical problem of hand motion on old stamps! –  Pouya Jan 31 '13 at 14:22
    
@Pouya, I also thought of that solution. In fact, the idea of simulating a stamp came from simulate an old typewriter with three layers of text on this question. But have multiple overlapping TikZ pictures seems excessive. Maybe it is possible similate with a smooth shadow like those of the 'pst-blur' package or another more simpler way. –  Fran Jan 31 '13 at 18:10

1 Answer 1

up vote 35 down vote accepted

Second Version

A version via a simple functional shading (no random values...)

Extract from pgfmanual: Warning: These shadings are the least portable of all and they put the heaviest burden of the renderer. They are slow and, possibly, will not print correctly!

The picture below is a screenshot from AdobeReader (ImageMagick, evince, xpdf, okular produce bad results).

enter image description here

\documentclass[tikz]{standalone}
\usetikzlibrary{fadings,patterns,fit}

% use stamp.png to make a fading (a mask)
\begin{tikzfadingfrompicture}[name=stamp]
  \node [fill=transparent!0,inner sep=0]
  {\includegraphics[width=50pt,height=50pt]{stamp.png}};
  \begin{scope}[yshift=-90pt,transform canvas={scale=.2}]
    \node[color=gray!50!black,font=\ttfamily] {\today};
  \end{scope}
\end{tikzfadingfrompicture}

\colorlet{mycolor}{blue}
\pgfdeclarefunctionalshading{stampfunctional}
{\pgfpointorigin}{\pgfpoint{4cm}{4cm}}{\pgfshadecolortorgb{mycolor}{\myrgb}}{
  20 mul
  sin 1 add 0.5 mul
  exch
  20 mul
  cos 1 add 0.5 mul
  add 0.5 mul
  %1 exch sub
  dup \myrgbred
  1 exch sub mul 1 exch sub exch
  dup \myrgbgreen
  1 exch sub mul 1 exch sub exch
  \myrgbblue
  1 exch sub mul 1 exch sub
}

\begin{document}
\begin{tikzpicture}[inner sep=0]
  \colorlet{mycolor}{blue!70!black}
  % fill a region stampshading
  \node[
  shading=stampfunctional,
  shading angle=-45,
  minimum width=4cm,minimum height=4cm]{};
  % fade the same region using stamp fading as mask
  \node[fill=white,minimum width=4cm,minimum height=4cm,path fading=stamp]{};

  \colorlet{mycolor}{lime!70!black}
  % fill a region stampshading
  \node[
  shading=stampfunctional,
  shading angle=-45,
  minimum width=4cm,minimum height=4cm] at (0,4){};
  % fade the same region using stamp fading as mask
  \node[fill=white,minimum width=4cm,minimum height=4cm,path fading=stamp] at (0,4){};
\end{tikzpicture}
\end{document}

First version

The blur effect can't be made via PDF. But with fading and shading, you can simulate some imperfections.

Here is an example using stamp.png (your image in black and transparent color):

enter image description here

\documentclass[tikz]{standalone}
\usetikzlibrary{fadings,patterns,fit}

% use stamp.png to make a fading (a mask)
\begin{tikzfadingfrompicture}[name=stamp]
  \node [fill=transparent!0,inner sep=0]
  {\includegraphics[width=50pt,height=50pt]{stamp.png}};
  \begin{scope}[yshift=-90pt,transform canvas={scale=.2}]
    \node[color=gray!50!black,font=\ttfamily] {\today};
  \end{scope}
\end{tikzfadingfrompicture}

\pgfdeclarehorizontalshading[mycolor]{stampshading}
  {4cm}{
    color(0cm)=(mycolor);
    color(1cm)=(mycolor);
    color(1.35cm)=(mycolor);
    color(1.40cm)=(white!80!mycolor);
    color(1.45cm)=(mycolor);
    color(1.85cm)=(mycolor);
    color(2.00cm)=(white!80!mycolor);
    color(2.05cm)=(mycolor);
    color(2.25cm)=(mycolor);
    color(2.30cm)=(white!80!mycolor);
    color(2.35cm)=(mycolor);
    color(2.45cm)=(mycolor);
    color(2.50cm)=(white!80!mycolor);
    color(2.55cm)=(mycolor);
    color(4cm)=(mycolor)
  }


\begin{document}
\begin{tikzpicture}[inner sep=0]
  \colorlet{mycolor}{blue!70!black}
  % fill a region stampshading
  \node[
  shading=stampshading,
  shading angle=-45,
  minimum width=4cm,minimum height=4cm]{};
  % fade the same region using stamp fading as mask
  \node[fill=white,minimum width=4cm,minimum height=4cm,path fading=stamp]{};

  \colorlet{mycolor}{lime!70!black}
  % fill a region stampshading
  \node[
  shading=stampshading,
  shading angle=-45,
  minimum width=4cm,minimum height=4cm] at (0,4){};
  % fade the same region using stamp fading as mask
  \node[fill=white,minimum width=4cm,minimum height=4cm,path fading=stamp] at (0,4){};
\end{tikzpicture}
\end{document}

The shading is a simple horizontal shading. With a functional shading, the imperfections could be more realist.

Here the stamp.png image (but without transparent color):

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.