![将图像裁剪为方框](https://linux22.com/image/377675/%E5%B0%86%E5%9B%BE%E5%83%8F%E8%A3%81%E5%89%AA%E4%B8%BA%E6%96%B9%E6%A1%86.png)
在 (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}