在LaTeX中自动调整图片大小以适应A4纸张

3

我有很多图片,它们的大小相差很大。

我希望开发一种算法,可以去除多余的空白。这种算法在信号处理中被用于去除冗余噪声,例如在手机中。

该算法应按以下方式使用:

 \includegraphics[crop-redundant-whitespace]{picture.png} 

函数crop-redundant-whitespace应该修改include命令,例如:
 \includegraphics[width=2.5cm, height=5.0cm]{picture.png}

算法应该:

  • 检测长度至少为2cm的相互分离的部分
  • 如果存在许多大部分,则应选择最大的部分。

如何自动调整图片大小并使其适合A4?


这是编程,因为我旨在开发算法,使您可以将其简单地添加到图像中,以便消除额外的空白。我曾经在信号处理中看到过使用这样的算法来消除额外的噪音。 - Léo Léopold Hertz 준영
请点击此处查看与此相关的编程内容:http://tex.stackexchange.com/questions/39147/image-to-page-width。 - hhh
4个回答

2

这并不是一个LaTeX问题;在文档中包含的图像上执行任意转换是可能的,但是检测图像中的空白区域,比如说,远远超出了LaTeX有用能力的范围。

先学会使用ImageMagick或其他工具进行转换,然后再问如何将其与LaTeX接口。


@Will:这是一个解决方案:http://pdfcrop.sourceforge.net/。首先需要将图片转换为PDF格式,然后pdfcrop会自动调整图片大小。现在的问题是LaTeX如何将PdfCrop绑定到图像命令中。 - Léo Léopold Hertz 준영

1

粗糙而即兴:

\documentclass[a4paper]{article}

\begin{document}
\resizebox{\textwidth}{\textheight}{\includegraphics*{compatible_image_file}}
\end{document}

但是你会失去纵横比。用“!”替换其中一个长度以保持比例。你也可以在整个图形包含周围加上一个\rotatebox,以解决纵向/横向不兼容问题。

使用方括号样式的参数来调用\includegraphics,看起来像:

\includegraphics[width=\textwidth, height=\textheight]{compatible_image_file}

这可能比我已经使用了15年的老掉牙的咒语更为时新。必须更新我的个人技巧文件...

如果您发现默认的空白太宽,可以应用通常的边距调整。您还可以考虑使用slides类。我认为默认的边距更接近页面边缘。


谢谢你的建议!但是,你的解决方案并没有去除图片周围的额外空格。 - Léo Léopold Hertz 준영
不是的,它只回答您最初编写的问题。 - dmckee --- ex-moderator kitten
这取决于图像的类型,因此是"compatible_image_file"}?JPG没有尺寸信息,但其他一些格式有。因此,使用哪种格式最容易将图像缩放到A4大小(没有任何白色区域)? - hhh

1

你可以使用epstopdf的shell-escape功能对图像进行任意转换。这里是一个执行pdfcrop的示例,它会对每个包含的PDF文件进行处理:

\documentclass{article}
\usepackage{graphicx,epstopdf}
\DeclareGraphicsRule{.pdf}{pdf}{-crop.pdf}{`pdfcrop #1}
\begin{document}
\fbox{\includegraphics[scale=0.5]{essai}}% => 将这里改为真正的PDF文件
\end{document}

然而,在TeX Live 2009的预发布版本中,我在这方面遇到了一些问题;现在无法花时间调试,但你可以在旧系统上尝试一下。

即使对你来说这样可以正常工作,但这还是相当低效的,因为它必须在每次编译文档时运行。我建议你预处理图片。


我在OS X Leopard和TextLive 2008中遇到了同样的问题。 - Léo Léopold Hertz 준영
对我来说,TeX Live 2008可以正常工作。你是否开启了-shell-escape选项? - Will Robertson

0

不要重复造轮子,从这里改编。

\newcommand{\adjustimg}{% Horizontal adjustment of image
  \ifodd\value{page}\hspace*{\dimexpr\evensidemargin-\oddsidemargin}\else\hspace*{-\dimexpr\evensidemargin-\oddsidemargin}\fi%
}
\newcommand{\centerimg}[2][width=\textwidth]{% Center an image
  \makebox[\textwidth]{\adjustimg\includegraphics[#1]{#2}}%
}

\begin{document}
\mbox{} \par
\noindent\centerimg[width=\paperwidth,height=\paperheight]{tiger}

现在有一个问题:页面上有一些奇怪的白色上面板,不知道为什么,但我认为这比其他答案更接近(对我来说至少不是很有效)-- 请参见参考文献。

信息

  1. 一个类似的问题在这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接