The simplest way is to use the onimage package from the From Answers to Packages project, which implements the answer given in Drawing on an image with TikZ.

To use the package: Download the file onimage.dtx from bazaar.launchpad.net/~tex-sx/tex-sx/development/files, run pdflatex on it, and move the resulting .sty file to your working directory.

Then you can load the onimage package and use the tikzonimage environment, which has the form

\begin{tikzonimage}[<options for includegraphics>]{<image name>}[<options for TikZ>] ... \end{tikzonimage}`

The coordinate system will be scaled in such a way that (0,0) is the bottom left corner of the image, and (1,1) is the top right. You can disable this scaling, if you wish, by setting the key tsx/scale cs=none in the optional TikZ arguments.

Here's a simple example:

\documentclass{article} \usepackage{onimage} \begin{document} \begin{tikzonimage}{bottle.jpg} \draw [orange, line width=5pt] (0.5,0.92) circle [radius=0.75cm]; \end{tikzonimage} \end{document}

You can switch on a grid to help you position your TikZ objects by setting the key tsx/show help lines .

\documentclass{article} \usepackage{onimage} \begin{document} \begin{tikzonimage}{bottle.jpg}[tsx/show help lines] \draw [orange, line width=5pt] (0.5,0.92) circle [radius=0.75cm]; \end{tikzonimage} \end{document}

In order to get the labels to look like you described them, you can use the font=<font commands> option to set the font options, fill=<color> for the background and text=<color> for the text color. To keep things neat, you can define a new style for this using

\tikzset{ <new style name>/.style={ fill=black, text=white, font=\fontfamily{phv}\selectfont\Large\bfseries } }

Here's an example in which I've also added the label position (0.2 cm from the bottom right edge of the images) as part of the style definition, and made the style alter the every node/.style , which is applied to all nodes in a TikZ picture. This allows us to apply this newly defined style to the whole TikZ picture in the tikzonimage optional argument, instead of applying it to the node itself using

ode [<style>] {}; :