如果高度超出范围,如何将图像旋转 90 度?

如果高度超出范围,如何将图像旋转 90 度?

我认为这种方法可行,adjustbox但不确定。伪代码:

  • 如果高度超出,则将图像顺时针旋转 90 度,现在对所有图像应用宽度约束
  • \linewidth在任何情况下都不要传递最大宽度 (= )

换句话说,preudocode

  • 如果图像原本太高,则将其旋转 90 度,这样最大尺寸现在就是宽度。将宽度缩放至width=\linewidth

伪代码

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}
  % If image height overfull, rotate the image 90 degree clockwise. Apply now to it width constaint. 
  \includegraphics[if HEIGHT overfull, rotate 90 degree clockwise; width=\linewidth]{1.jpg}
\end{figure}
\end{document}

答案1

以下是您可以遵循的一般方法:

\documentclass{article}

\usepackage{graphicx}
\newsavebox{\imgbox}

\begin{document}

\begin{figure}
  \savebox{\imgbox}{% Store image in a box
    \includegraphics[height=<h>,width=<w>,keepaspectratio]{example-image}}%
  \ifdim\ht\imgbox > <H>
    % Do something to the box
  \else
    \usebox{\imgbox}%
  \fi
\end{figure}

\end{document}

本质上,您需要根据所包含图像的大小进行调整。如果图像太高(或太宽),您可能需要以其他方式处理它。因此,您可以将图像存储在一个框中(例如),然后您可以根据其他尺寸\imgbox测试高度(\ht\imgbox或宽度) 。\wd\imgbox


具体到您的应用程序,您可以执行以下操作:

\begin{figure}
  \savebox{\imgbox}{% Store image in a box
    \includegraphics[height=\textheight,width=\linewidth,keepaspectratio]{example-image}}%
  \ifdim\ht\imgbox > \textheight
    \resizebox{\linewidth}{!}{\rotatebox{90}{\includegraphics{example-image}}}%
  \else
    \usebox{\imgbox}% Use resized image as-is
    % \resizebox{\linewidth}{!}{\usebox{\imgbox}}% ...maybe resize to fit width
  \fi
\end{figure}

答案2

以下操作能满足您的要求吗?第一个法线\includegraphics会产生溢出\vbox(由于图像移到了第二页,因此在空白的第一页上可以看到),而\includegraphicsoptrotate旋转图像(并将其缩小到\textwidth)。

\documentclass{article}
\usepackage{graphicx}
\newlength\graphicsheight
\newcommand\includegraphicsoptrotate[1][]%
   {\settowidth\graphicsheight{\includegraphics[#1]{#2}}%
    \ifdim\graphicsheight>\textheight
      \includegraphics[#1,height=\linewidth,angle=90,origin=c]{#2}%
    \else
      \includegraphics[#1,width=\linewidth]{#2}%
    \fi
   }
\begin{document}
\noindent
\includegraphics[scale=2]{example-image-a}

\noindent
\includegraphicsoptrotate[scale=2]{example-image-a}

\end{document}

在此处输入图片描述在此处输入图片描述在此处输入图片描述

相关内容