将图像裁剪为方框

将图像裁剪为方框

在 (Lua)LaTeX 中是否有任何简单的方法可以将图像裁剪到特定的边界框,但只能裁剪对于该边界框来说太大的一个维度?

裁剪高度的解决方案可能如下:

\usepackage{adjustbox}

\adjustimage{clip=true, 
             trim=0cm {0.5\height-6cm*\width/\pagewidth} 0cm {0.5\height-6cm*\width/\pagewidth}, 
             keepaspectratio=true, 
             width=\pagewidth}
             {image.jpg}

但我想自动裁剪大于边界框的尺寸。

我是不是忽略了什么软件包?很难相信我是第一个想这么做的人?

用例是标题页,但我希望能够根据文档交换图像。所以一般来说,我事先不知道图像的尺寸或方向。必须从 LaTeX 中确定。

答案1

像这样?

\documentclass{article}
\usepackage{graphics}
\usepackage{adjustbox}

\newcommand{\fillbox}[3]% #1=width, #2=height, #3=filename
{\bgroup
  \dimen1=#1\relax% store width into register
  \dimen2=#2\relax% store height into register
  \sbox0{\includegraphics[width=#1]{#3}}%
  \ifdim\ht0>\dimen2
    \dimen0=\dimexpr \ht0-\dimen2\relax
    \adjustbox{clip=true,trim=0pt 0.5\dimen0 0pt 0.5\dimen0}{\usebox0}%
  \else
    \sbox0{\includegraphics[height=#2]{#3}}%
    \ifdim\wd0>\dimen1
      \dimen0=\dimexpr \wd0-\dimen1\relax
      \adjustbox{clip=true,trim=0.5\dimen0 0pt 0.5\dimen0 0pt}{\usebox0}%
    \else
      \usebox0
    \fi
  \fi
\egroup}

\begin{document}
\noindent\fillbox{\textwidth}{0.2\textheight}{example-image}
\rule{\textwidth}{0.2\textheight}

\noindent\fillbox{0.4\textwidth}{0.5\textheight}{example-image}%
\rule{0.4\textwidth}{0.5\textheight}
\end{document}

演示

相关内容