A imagem PNG de uma imagem TikZ gerada pela classe de documento independente tem dimensões erradas

A imagem PNG de uma imagem TikZ gerada pela classe de documento independente tem dimensões erradas

Considere o seguinte manuscrito LaTeX, que usa a standaloneclasse document para gerar imagens PDFe PNGimagens de uma TikZimagem.

\documentclass[tikz,convert]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw (0,0) -- (1,1)
   [rounded corners] -- (2,0) -- (3,1)
   [sharp corners] -- (3,0) -- (2,1);
\end{tikzpicture}
\end{document}

A imagem resultante PDFé (esta é uma captura de tela):

A imagem PDF resultante

A imagem resultante PNGé:

A imagem PNG resultante

Por que oPNG imagem é diferente eerrado, dimensões do que o PDFarquivo?

Responder1

Conceitualmente, os bitmaps não possuem um tamanho, eles apenas possuem um número de pixels. Conforme documentado no standalonemanual, a classe informaconvert para assumir 300 dpi, o que resulta em uma imagem de alta resolução para impressão, mas a resolução de imagem padrão para pdftex é 72 dpi, na verdadearquivos png podem armazenar um tamanho pretendido para seus pixelsmas a maioria não o faz e, mesmo que nem todos os sistemas usem a dica.

então qualquer um dos

  \fbox{\includegraphics[scale=.24]{file.png}}% 72/300=.24

ou

 {\pdfimageresolution=300 \fbox{\includegraphics{file.png}}}

será do mesmo tamanho que

 \fbox{\includegraphics{file.pdf}}

Responder2

Não, não tem. Depende de como você mede isso.

Medindo no MS Word:

Três imagens de resolução diferente colocadas no Word:

insira a descrição da imagem aqui

Quando impresso:

insira a descrição da imagem aqui

Medindo em LaTeX:

O código:

    \documentclass[]{standalone}
    \usepackage{graphics}
    \begin{document}
    \noindent
    \includegraphics{aaa.pdf}
    \includegraphics{aaa.png}
    \end{document}

Medição na tela com zoom de 100% do visualizador de PDF:

insira a descrição da imagem aqui

Medição na página da web:

Você não pode confiar no tamanho do PNG que vê em um navegador da web, pois eles processam imagens de maneira diferente (Veja aqui)

Imagem JPEG com 1200 dpi carregada no Imgur e vista através de um navegador da web:

insira a descrição da imagem aqui

Imagem PNG com 300 dpi Carregada no Imgur e vista através de um navegador da web:

insira a descrição da imagem aqui

Imagem JPEG com 50 dpi carregada no Imgur e vista através de um navegador da web:

insira a descrição da imagem aqui

Se quiser ver a dimensão correta em seu navegador, você precisa gerar seu PNG com o dpi correto. Veja o seguinte exercício:

Minha tela é 2560x1440.

A dimensão horizontal da tela é: aproximadamente 23,5 polegadas

A resolução da tela é de 2560 pontos/23,5 polegadas = 109 pontos por polegada

Gerei um PNG com dpi de aproximadamente 110.

Eu meço a dimensão horizontal na tela com um navegador da web:

insira a descrição da imagem aqui

Responder3

O standalonemanual do usuário (v1.2 - 15/07/2015) explica porque a imagem PNG gerada não possui as dimensões físicas esperadas e também fornece métodos para definir essas dimensões corretamente.

Por que a imagem PNG tem dimensões físicas erradas

De acordo com a seção 4.6.1 'Configurações de conversão' na pág. 15

as seguintes configurações padrão são usadas: [...] uma densidade de 300dpi

'dpi' é a abreviação de 'ponto por polegada', também conhecido como 'pixels por polegada' ('ppi'). Para ter as dimensões corretas quando exibido na tela, o ppi usado para gerar o PNG deve ser igual ao ppi da sua tela.

Para descobrir o ppi da sua tela, sigaeste método simplesdado na WikipediaDensidade de pixelspágina. O método consiste em usar uma régua fixada na tela para medir o comprimento de uma linha conhecida por ser composta por um determinado número de pixels.

Como garantir que a imagem PNG tenha as dimensões físicas corretas

Tabela 1 na pág. 17 sugere dois métodos para garantir que a imagem PNG gerada tenha as dimensões físicas desejadas. Ambos os métodos consistem em atribuir um valor à convertopção de classe do documento, conforme segue:

\documentclass[tikz,convert={...}]{standalone}
  1. Defina convert={density=<d>}onde <d>está o ppi da sua tela.

  2. Defina convert={size=<w>x<h>}, onde <w>x<h>estão as dimensões em pixels de uma imagem PNG conhecida por ter as dimensões físicas desejadas quando exibida na tela.

    No caso em apreço, como afirmou que a captura de tela da imagem PDF tinha as dimensões físicas corretas, utilize as suas dimensões em pixels, nomeadamente 137x50. Se você usa macOS, eles podem ser lidos diretamente no Finder.

informação relacionada