# Best figure size adjustment when dealing with different image sizes

I have a script which automatically creates a beamer presentation with several .ps images, each one inserted in a distinct frame. Those images consist on graphs built using GraphViz. The script is basically iterating on this code snippet:

\begin{frame}{Image 1}

\begin{figure}
\includegraphics[width=1\textwidth]{image-1.ps}
\end{figure}

\end{frame}


I have some images with large widths, like this one (reduced the size and quality for best viewing):

So the above code works like a charm. But I do have small images as well, like this one:

If I leave the \includegraphics command with no adjustments, my images will become way bigger than the frame itself. If I put width=1\textwidth, it will work fine with large width images, but not with small ones.

Is there a way to find the best figure size adjustment when using \includegraphics, so my images will be displayed correctly? I usually do that manually, but in this case it's a script which simply adds the image to the .tex body and compile it. I'm pretty sure I'm missing something obvious here, but couldn't figure out what it is.

-

graphicx provides the boolean value keepaspectratio. It's explained in the documentation as follow:
If set to true then specifying both width and height (or totalheight) does not distort the figure but scales such that neither of the specified dimensions is exceeded.
\includegraphics[width=\linewidth,height=\textheight,keepaspectratio]{picture}

keepaspectratio is a new one for me. Exactly what I need, too. – Matthew Leingang May 4 '11 at 17:12
Just in case someone needs the same for text: The adjustbox package allows to use \adjustbox[width=\linewidth,height=\textheight,keepaspectratio]{<text>}. You might want to use totalheight instead of height. Alternatievly you can use \resizebox{<width>}{<height>}{<text>} (or \resizebox* to use totalheight instead) but this requires \Gin@isotrue locally to enable the keepaspectratio feature. You could write is as \csname Gin@isotrue\endcsname to avoid issues with the @. – Martin Scharrer May 25 '11 at 11:21
@Marco @Martin Is there something similar for floats? If I use \begin{figure}[p] \includegraphics[width=\linewidth,height=\textheight,keepaspectratio]{picture} \caption{somecaption} \end{figure} then the graphic will be scaled to fit the page, but the float might still produce an overfull hbox because of the caption. – Janek Jun 20 '13 at 11:27