# Include image in tikz with pixel unit

In tikzpicture, I can set 1pt as unit but 1px doesn't work! So I guess 1pt equal to 1px. But sounds like almost but not exactly!

This is a example. Original image is 200x150 but the node display is 200.74948ptx150.5621pt!

Should it be exactly 200x150? What's correct way to get 200x150?

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
%image source: /usr/local/texlive/2017/texmf-dist//latex/mwe/example-image-4x3.png
\node[anchor=south west,inner sep=0,outer sep=0] (image) at (0,0)
{\includegraphics{example-image-4x3}};
\draw[line width=0.1pt] let
\p1=(image.south west),
\p2=(image.north east),
\n1={(\x2-\x1)},
\n2={(\y2-\y1)}
in node[anchor=west] at (0,120) {\large \n1,\n2};
\end{tikzpicture}
\end{document}


I can not tell you why this happens, but I stumbled over this some time ago, and at least back then I did not know if there is a deeper reason. If you look up the conversion rate in the web, you will find that

1cm = 28.3465pt   (in web).


However, TikZ claims, as shown in the MWE below, it is

1cm = 28.45274pt  (Ti*k*Z).


If you factor in that slight discrepancy, you get, within the rounding errors, a perfect match, as the lowest line in the following output reveals.

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt]
%image source: /usr/local/texlive/2017/texmf-dist//latex/mwe/example-image-4x3.png
\node[anchor=south west,inner sep=0,outer sep=0] (image) at (0,0)
{\includegraphics{example-image-4x3}};
\draw[line width=0.1pt] let
\p1=(image.south west),
\p2=(image.north east),
\n1={(\x2-\x1)},
\n2={(\y2-\y1)}
in node[anchor=west] at (0,120) {\large \n1,\n2};
\path let \p1=(1cm,0) in node[anchor=west,fill=white] at (0,90) {$\x1\ne 28.3465pt$};
\pgfmathsetmacro{\myconv}{28.3465pt/28.45274}
\draw[line width=0.1pt] let
\p1=(image.south west),
\p2=(image.north east),
\n1={(\x2-\x1)*\myconv},
\n2={(\y2-\y1)*\myconv}
in node[anchor=west] at (0,40) {\large \n1,\n2};
\end{tikzpicture}
\end{document}


• Thanks, what's more, if I add [width=200pt] to includepicture, then I can get 200pt width, but the height is 150.01074pt. Dec 6 '18 at 2:32
• @beetlej I am not really sure, but to me this sounds like a rounding error.
– user121799
Dec 6 '18 at 2:34