位图图像

位图图像

我截取了一张图,裁剪后插入到我的文档中。现在,在生成的 PDF 文件中,图像周围出现了不需要的边框,如下所示。

我的代码:

\begin{figure}[ht]
    \centering
  \includegraphics[width = 6in, height = 8cm, keepaspectratio]{bilder/relatedMatter/TreeGNG.png}
    \caption{gestaucht}
    \label{Image:TreeGNG}
\end{figure}

带有不必要边框的图像:

图像

原始裁剪图像:

在此处输入图片描述

答案1

图像不是已正确裁剪。边缘仍然存在,只是变得透明了。

位图图像

如果原始图像是位图图像,则使用更好的图像编辑器(gimp,...)来真正从图像中删除边距。使用以下netpbm工具的示例:

pngtopnm -background white -mix <ruJ761V.png | pnmcrop | pnmtopng >TreeGNG-cropped.png

该选项-background white -mix将图像中的透明像素设置为白色。然后使用 将它们与图像的剩余边缘一起移除pnmcrop

裁剪结果

如果页面颜色不同,可以使图像的白色背景变得透明,例如使用gimp其功能“菜单 → 颜色 → 颜色到 Alpha”:

具有透明背景的裁剪结果

矢量图像

如果原始图像是基于矢量的格式(PDF、EPS),则转换为位图图像会降低质量。那么像 这样的工具pdfcrop会更好。此外,还可以使用 中的选项viewporttrimclip在 TeX 级别裁剪图像\includegraphics

在这种情况下,可以找到原始 PDF 文件这里。图像位于第 3 页的图 3 中。

值有很多种方式viewport。它们指定左下角和右上角的坐标:

viewport=<llx> <lly> <urx> <ury>

未指定单位时,默认单位为 bp。TeX 单位也可以明确指定。原点是左下角。

有很多方法可以获取这些值:

  • 以自然尺寸打印并用尺子测量。

  • 例如,在程序中测量时,gv以 bp 为单位的坐标显示光标位置。

  • 用网格覆盖图像(TikZ、包pagegrid,...)。

单独的文档有助于实验。\fbox显示图像的新边界框:

\documentclass{article}
\usepackage[margin=0pt]{geometry}
\usepackage{graphicx}
\pagestyle{empty}

\begin{document}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.1pt}
\fbox{%
  \includegraphics[
    page=3,
    viewport=80.5 524 299 684,
    clip,
  ]{901763.pdf}%
}
\end{document}

结果

替代方案pdfpages

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[
  fitpaper,
  pages=3,
  viewport=80.5 524 299 684,
]{901763.pdf}
\end{document}

可以手动优化这些值,或者当删除页面上的其他元素时,\fbox可以运行没有这些值的测试文档pdfcrop

viewport然后可以直接使用结果或调整值。

精炼值,例如:

viewport=80.65 524.4 298.55 683.7

文档中使用的选项为:

\includegraphics[page=3, viewport=80.65 524.4 298.55 683.7, clip]{901763.pdf}

在 TikZ 中使用网格进行测量

如果找不到能够很好地显示位置的程序,则可以在图像上放置一个网格:

\documentclass[tikz]{standalone}

\newcommand\ImageName{901763.pdf}
\newcommand\ImagePage{3}

\begin{document}
  \begin{tikzpicture}[
    inner sep=0pt, outer sep=0pt,
    x=1bp, y=1bp, % units
  ]
    \node[inner sep=0pt, above right] (image)
      {\includegraphics[page=\ImagePage]{\ImageName}};
    \draw[ultra thin, cyan] (0, 0) grid[step=10] (image.north east);
    \draw[very thin, red] (0, 0) grid[step=100] (image.north east);
  \end{tikzpicture}
\end{document}

原点位于左下角。青色线相距 10 bp,红线相距 100 bp:

结果网格

通过计算线条数量,粗略的边界框可以是:

left:    80 bp
bottom: 520 bp
right:  300 bp
top:    690 bp

此值可用于剪辑图像并将线条的分辨率提高到 1 bp 和 10 bp:

\documentclass[tikz]{standalone}

\newcommand\ImageName{901763.pdf}
\newcommand\ImagePage{3}

\begin{document}
  \begin{tikzpicture}[
    inner sep=0pt, outer sep=0pt,  
    x=1bp, y=1bp, % units
  ]
    \node[inner sep=0pt, above right] (image)
      {\includegraphics[page=\ImagePage]{\ImageName}};
    \draw[line width=.05pt, cyan] (0, 0) grid[step=1] (image.north east);
    \draw[ultra thin, blue] (0, 0) grid[step=10] (image.north east);
    \pgfresetboundingbox
    \useasboundingbox (80, 520) (300, 690);
  \end{tikzpicture}
\end{document}

结果更精细的网格

现在,左下方的原点位于 (80 bp, 520 bp),青色线间隔 1 bp,蓝线间隔 10 bp。

然后新的边界框(所需区域外的线)是:

left:    81 bp
bottom: 524 bp 
right:  299 bp
top:    684 bp

重新检查值发现左边组件有点太大,因此最终的边界框可能是:

viewport=80 524 299 684

相关内容