Como adicionar uma barra de escala a uma imagem

Como adicionar uma barra de escala a uma imagem

Estou tentando descobrir a melhor forma de adicionar barras de escala às minhas imagens, como nestas imagens maravilhosas de flocos de neve (a imagem em tamanho real é um pouco grande, mas é o melhor exemplo do que estou tentando fazer):

Uma possibilidade seria inserir as barras de escala utilizando um programa diferente. No entanto, quero garantir que o texto seja bonito e nítido, em vez de salvá-lo como parte de uma imagem rasterizada. Além disso, se eu inserir as barras de escala antecipadamente, o texto será redimensionado quando o LaTeX dimensionar as imagens.

Até agora não consegui encontrar nenhum comando ou pacote existente que facilite isso. Gostaria de poder especificar o tamanho real da imagem e calcular o tamanho da barra de escala.

Se eu tiver que escrever minha própria macro, acho que começarei com opacote sobrepico

Estou indo na direção certa?

EDITAR 2:

Depois de me familiarizar com o TikZ, aqui está a macro que criei:

\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}
}

Estou usando uma combinação de unidades aqui (cm e frações do tamanho da imagem). Sinto que esse aspecto poderia ser um pouco mais elegante, mas o que tenho agora é suficiente para meus propósitos.

Responder1

Ajustei um pouco sua macro para adicionar um fundo transparente para quando o texto ficar difícil de ler:

\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}
}

A barra de escala resultante fica assim: Barra de escala com fundo

Veja minha essência para mais informações e uma barra de escala sem plano de fundo:https://gist.github.com/rbnvrw/00312251b756f6b48084#file-latexscalebars-md

Responder2

eu encontreiEPIser uma boa ferramenta para isso.

ipelets -> inserir imagem.

Em seguida, adicione o texto e salve como eps ou pdf.

informação relacionada