6

I have two picture, one (Image 1) is the big one while the other (Image 2) is the small one that is a detail of the big one. I would like to do something like the zoom option (with tikzpicture) but instead to have the zoomed image image I just want to see the other image. Everything inside a figure with its caption.

I made an example in case is difficult to understand what I want to do. enter image description here Image 1 is my main image, the cross represents the schematised detail that is explained with Image 2. The two images are two .png.

Is it possible?

1

4 Answers 4

9

Starting point. Now, you only need to connect the other anchors and decide the right position for the squares.

enter image description here

\documentclass{report}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[h]\centering
\begin{tikzpicture}
\node[draw] (one) at (0,0){\includegraphics[width=6cm]{example-image-a}};
\node[anchor=north,draw,inner sep=0pt] (two) at ([xshift=-1cm]one.north west){\includegraphics[width=1cm]{example-image-b}};
\node[draw] (rect) at (-1,0){};
\draw (two.south east) -- (rect.south west);
\end{tikzpicture}
\caption{text}
\end{figure}

\lipsum[2]
\end{document}
3
  • Does it exist an easy way to find the right position for the small square? Like an online tool that gives the relative coordinate of the main image using just the mouse pointer?
    – Shika93
    Commented Aug 21, 2018 at 19:59
  • 1
    Mouse pointer is not good since usually the result is given in pixels. If you use Gimp (free) you can create a rectangle and see its coordinates in other units. Or use Imagemagick, which is lighter.
    – Sigur
    Commented Aug 21, 2018 at 21:54
  • Ok it doesn't matter, I made it in the old way. Thanks it's perfect!
    – Shika93
    Commented Aug 21, 2018 at 22:37
7

A solution using path picture to clip the zoom.

And as @Sigur said 'Starting point. Now, you only need to connect the other anchors and decide the right position for the' circles.

\documentclass[a4paper, 12pt]{article}
\usepackage{mwe}
\usepackage{tikz}

\begin{document}

    \begin{figure}[h!]
        \centering
        \includegraphics[width=.7\linewidth]{example-image}
        \caption[Text for the list of figures]{Text under the figure}
        \label{fig:theReference0}
    \end{figure}

    \begin{figure}[h!]
        \centering
        \begin{tikzpicture}
            [path image/.style={path picture={\node at (path picture bounding box.center) {\includegraphics[height=3cm]{#1}};}}]

            \node (img) {\includegraphics[width=.7\linewidth]{example-image}};
            \node (c1) [draw, circle, red, text width=.7cm] at (img.center) {};
            \draw [red] (c1.east) -- (img.east);
            \draw [path image=example-image-a,draw=red,thick] (img.east) circle (2cm);
        \end{tikzpicture}
        \caption[Text for the list of figures]{Text under the figure}
        \label{fig:theReference}
    \end{figure}
\end{document}

enter image description here

1
  • + Capitalizing the "a" to emphasize magnification
    – Carel
    Commented Aug 21, 2018 at 20:49
1

With picture environment:

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\noindent%
\setlength{\unitlength}{\textwidth}%
\begin{picture}(1,0.5)%
    \put(0.3,0){\includegraphics[width=.7\textwidth]{example-image}}%
    \put(0,0.33){\includegraphics[width=.2\textwidth]{example-grid-100x100bp}}%
    \put(0.0,0.33){\line(4,-1){.4}}
    \put(0.0,0.53){\line(4,-1){.4}}
    \put(0.2,0.33){\line(4,-1){.4}}
    \put(0.2,0.53){\line(4,-1){.4}}
    \put(0.4,0.23){\line(1,0){.2}}
    \put(0.4,0.43){\line(1,0){.2}}
    \put(0.4,0.23){\line(0,1){.2}}
    \put(0.6,0.23){\line(0,1){.2}}
\end{picture}%

\end{document}
0

I will share a sample code:

\documentclass{report}%report
% if you just want to create and use the figure in the original latex file to lower the compilation time like me, use standalone 
%\documentclass{standalone}
\usepackage{tikz}
\usepackage{graphicx}

\begin{document}
\begin{figure}[h]\centering
\begin{tikzpicture}
% 0,0 will be the distance from the inside small rectangle
\node[draw] (one) at (0,0){\includegraphics[width=6cm]{main_image.png}};
\node[anchor=north,draw,inner sep=0pt] (two) at ([xshift=1.55cm, yshift= -1.45cm]one.north east)
% bm: how far the zoom image should be, either west/east = right/left
{\includegraphics[width=3cm]{zoom_image.png}};
\node[draw = purple,minimum width=5.03cm,minimum height=1cm]
(rect) at (0.25,-1.45){};%(-2.2,-1.855){}; 
% draw, thick,minimum width=2cm,minimum height=2cm
% 
\draw [purple](two.south east) -- (rect.south west);
\draw [purple](two.north west) -- (rect.north east);
\end{tikzpicture}
%\caption{text}
\end{figure}
\end{document}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .