绘制网格以获取要传递给 includegraphics 的视口选项的坐标

绘制网格以获取要传递给 includegraphics 的视口选项的坐标

我想仅包含图像的一部分。为此,我使用'sviewport选项。为了找到坐标,我反复试验,不断调整参数,直到找到正确的坐标。这是低效的。graphicxincludegraphicsviewport

\documentclass{standalone}
\usepackage{graphicx}
\begin{document}%
\includegraphics[viewport=0 0 10 10,clip]{image}
\end{document}

有什么方法可以轻松获取/绘制网格,以高效选择要传递给的坐标viewport?例如,当我想使用在图像上绘图时tikz,我会绘制帮助线 根据这篇文章。在这种情况下,我根本不想绘制;我只想仅包含图像的指定部分。

答案1

\documentclass{article}
\usepackage{graphicx,xcolor}
\usepackage[abs]{overpic}% option [abs] for absolute values 
\begin{document}%

\begin{overpic}[scale=0.5,unit=1mm,grid,tics=10]{tiger}
  \put(50,50){\makebox[0pt]{\colorbox{blue}{\color{white}\Huge Tiger}}}
\end{overpic}

\fbox{\includegraphics[viewport=80mm 120mm 120mm 160mm,scale=0.5,clip]{tiger}}

\end{document}

在此处输入图片描述

绝对值被缩小了,这就是我必须将眼睛的坐标加倍的原因。

答案2

使用 PSTricks。

\documentclass[preview,border=12pt]{standalone}% remove border option to get a tight output
\usepackage{pstricks}

\def\M{10}% columns
\def\N{10}% rows
\def\scale{1}% scale
\def\filename{shaolin}% filename


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

\addtopsstyle{gridstyle}
{
    gridcolor=yellow,
    subgridcolor=gray,
    subgriddiv=10,
    griddots=0,
    subgriddots=5,
    gridwidth=0.4pt,
    subgridwidth=0.2pt,
}

\psset
{
   xunit=\dimexpr\wd\IBox/\M,
   yunit=\dimexpr\ht\IBox/\N,
}


\def\Navigator{%
\begin{pspicture}[showgrid=top](\M,\N)
    \rput[bl](0,0){\usebox\IBox}
\end{pspicture}}


\def\ViewPort(#1,#2)(#3,#4){\viewport(\the\dimexpr#1\psxunit,\the\dimexpr#2\psyunit)(\the\dimexpr#3\psxunit,\the\dimexpr#4\psyunit)}

\def\viewport(#1,#2)(#3,#4){\includegraphics[scale=\scale,viewport=#1 #2 #3 #4,clip]{\filename}}

\begin{document}
%\Navigator% disable it after using
\ViewPort(2,3)(6,6)
\end{document}

如何使用:

  1. \Nagivator将显示我们确定视口坐标的网格。

    在此处输入图片描述

  2. \ViewPort用于剪切视口之外的所有内容。

    在此处输入图片描述

  3. 删除border文档类中的选项以获得紧密的输出。

相关内容