画像にスケールバーを追加する方法

画像にスケールバーを追加する方法

私は、これらの素晴らしい雪の結晶の画像のように、画像にスケール バーを追加する最適な方法を考えています (フル サイズの画像は少し大きいですが、私がやろうとしていることの最良の例です)。

1 つの可能性としては、別のプログラムを使用してスケール バーを挿入することが考えられます。ただし、テキストをラスター イメージの一部として保存するのではなく、テキストがきれいで鮮明になるようにしたいです。また、スケール バーを事前に挿入すると、LaTeX がイメージを拡大縮小するときにテキストのサイズが変更されます。

これまでのところ、これを簡単に実行できる既存のコマンドやパッケージを見つけることができませんでした。画像の実際のサイズを指定し、スケール バーのサイズを計算できるようにしたいと思います。

自分でマクロを書かなければならない場合は、まずオーバーピックパッケージ

私は正しい方向に向かっているでしょうか?

編集2:

TikZ に慣れた後、私が考え出したマクロは次のとおりです。

\usepackage{tikz}
\usepackage{siunitx}

% Inserts a scale bar into an image
% Optional argument 1: the colour of the bar and text
% Argument 2: an \includegraphics command
% Argument 3: the real world width of the image
% Argument 4: the length of the scale bar
% Argument 5: the units in which the scale bar is measured
\newcommand{\scalebar}[5][white]{
 \begin{tikzpicture}
  \draw (0,0) node[anchor=south west,inner sep=0] (image) { #2 };
  \begin{scope}[x={(image.south east)},y={(image.north west)}]
   \fill [#1] (0.05,0.2cm) rectangle (#4/#3+0.05,0.4cm);
   \draw [#1] (0.05,0.4cm) node[anchor=south west] { \SI{#4}{#5} };
  \end{scope}
 \end{tikzpicture}
}

ここでは、単位の組み合わせ (cm と画像サイズの分数) を使用しています。この側面はもう少し洗練されているように感じますが、現在の状態でも目的には十分です。

答え1

テキストが読みにくくなった場合に備えて、透明な背景を追加するようにマクロを少し調整しました。

\newcommand{\scalebarbackground}[6][white]{
 \begin{tikzpicture}
  \node[anchor=south west,inner sep=0] (image) { #2 };
  \begin{scope}[x={(image.south east)},y={(image.north west)}]
   \fill [fill=blue, fill opacity=0.5] (0.04,1.3em) rectangle (#5*#4/#3+0.04,0.1em);
   \draw [#1, line width=0.2em] (0.04,1.2em) -- node[below,inner sep=0.1em, font=\footnotesize] {\SI{#5}{#6}} (#5*#4/#3+0.04,1.2em);
  \end{scope}
 \end{tikzpicture}
}

結果のスケールバーは次のようになります。 背景付きスケールバー

詳細情報と背景なしのスケールバーについては、私の gist を参照してください。https://gist.github.com/rbnvrw/00312251b756f6b48084#file-latexscalebars-md

答え2

私は見つけたアイピーこれには素晴らしいツールとなるでしょう。

ipelets -> 画像を挿入します。

次にテキストを追加し、eps または pdf として保存します。

関連情報