裁剪插入的图像?

裁剪插入的图像?

我正在插入一张简单的图像:

\includegraphics[height=5cm]{filename.png}

这样会生成一张保持纵横比的图像,因此宽度大约为 6 厘米。但我只想要图像的左侧,并希望将其裁剪为 50% 的宽度。可以这样做吗?

如果可能的话,我想以一种可移植的方式来做到这一点(即,本文档的其他作者不必安装软件包,并且可以与相当旧的版本一起使用pdflatex- 我们工作中的计算机急需升级)。

答案1

您可以使用 裁剪图像graphicx

\documentclass{article}

\usepackage{graphicx}

\begin{document}
% Answer: [trim={left bottom right top},clip]
% Ex. 1: trim from left edge
\includegraphics[trim={5cm 0 0 0},clip]{example-image-a}
% Ex. 2: trim from right edge
\includegraphics[trim={0 0 5cm 0},clip]{example-image-a}
\end{document}

使用该trim选项,它采用四个空格分隔的值。

 trim={<left> <lower> <right> <upper>}

如果您不指定单位,则包会假定bp大点为单位。设置这些值后,您必须使用clip=true或 来激活裁剪clip

如果您结合trim使用height或类似的东西,图像将被裁剪然后调整大小。这意味着裁剪值必须适合原始大小。如果找不到解决方案,则裁剪为 50% 宽度。

更新

正如马丁在评论中所说,你可以使用adjustbox将图像精确地裁剪 50%。请注意,必须\includegraphics用替换\adjincludegraphics才能访问\width

\documentclass{article}

\usepackage[export]{adjustbox}

\begin{document}
\adjincludegraphics[height=5cm,trim={0 0 {.5\width} 0},clip]{example-image-a}
\end{document}

adjustbox还提供\height\depth\totalheight

答案2

剪掉图片右侧的 50%没有使用额外的包,你可以使用保存箱首先测量图像的自然大小。这只需要graphicx作为 LaTeX 本身的一部分且始终安装的包。请注意,所有缩放/调整大小均已应用修剪。如果您希望将原始图像缩放到 5 厘米宽,然后裁剪 50%,只需将裁剪后的一半调整为 2.5 厘米宽即可:

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\begingroup
\sbox0{\includegraphics{example-image}}%
\includegraphics[clip,trim=0 0 {.5\wd0} 0,width=2.5cm]{example-image}
\endgroup

\end{document}

还可以使用内部宏来graphics/x计​​算将原始图像缩放为 5 厘米宽度的比例因子,然后在剪切图像上也使用此比例因子:

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\includegraphics[width=5cm]{example-image} %<---- for comparison


\begingroup
\sbox0{\includegraphics{example-image}}%
\makeatletter
\Gscale@div\myscale{5cm}{\wd0}
\includegraphics[clip,trim=0 0 {.5\wd0} 0,scale=\myscale]{example-image}
\endgroup

\end{document}

答案3

viewport的键也graphicx可用于模拟修剪或裁剪。viewport有 4 个空格分隔的长度参数:左下右上。其余代码应该是不言自明的。

\documentclass{article}

\def\FirstScale{0.5}% scale for loading
\def\SecondScale{1}% scale for final
\def\FileName{example-image-a}% file name


\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\FirstScale]{\FileName}}

\usepackage{pgf}

\newlength\xL
\newlength\yL
\newlength\xR
\newlength\yR

\pgfmathsetlength{\xL}{0*\wd\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\yL}{0*\ht\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\xR}{0.5*\wd\IBox/\FirstScale}% please adjust
\pgfmathsetlength{\yR}{1.0*\ht\IBox/\FirstScale}% please adjust


\usepackage[tightpage,active,graphics]{preview}
\PreviewBorder=0pt

\begin{document}
\includegraphics[viewport={\xL} {\yL} {\xR} {\yR},clip,scale=\SecondScale]{\FileName}
\end{document}

在此处输入图片描述

请注意,导入图像后文件的大小也不会减小trimviewport

答案4

如果可以裁剪源(在我的情况下,当我搜索使用 \includegraphics 进行裁剪的选项时),则以下用于裁剪 PDF 的在线裁剪工具可以很好地完成这项工作:https://pdfresizer.com/crop

相关内容