I often need to draw on an image precisely. For this, I draw two paths on the image and I position the points proportionally on the image. This solution allows me to change the size of the image without needing to recalculate the points like in the image below.
\documentclass[A4]{article}
\usepackage{tikz}
\usepackage{graphicx}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.5\textwidth]{tux.png}};
\draw[red] (img.west) -- (img.east)
coordinatepos=0.53
coordinatepos=0.41;
\draw[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.3\textwidth]{tux.png}};
\path[red] (img.west) -- (img.east)
coordinatepos=0.53
coordinatepos=0.41;
\path[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\begin{tikzpicture}[rotate=30,transform shape]
\node(img){\includegraphics[width=0.5\textwidth]{tux.png}};
\draw[red] (img.west) -- (img.east)
coordinatepos=0.53
coordinatepos=0.41;
\draw[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\end{document}
what I would like is an command or an environment
\begin {imageScope}[xstep = imageWidth / 10, ystep = imageHeight / 10]
...
...
\end{imageScope}
which will allow me to position the different points in a relative way directly on the image with a drawing command in the scope like
\draw (x1, y1) - (x2, y2);
where (x1, y1) and (x2, y2) are defined in the coordinate system associated with the image.

