独立文档类生成的 TikZ 图片的 PNG 图像尺寸错误

独立文档类生成的 TikZ 图片的 PNG 图像尺寸错误

考虑以下 LaTeX 手稿,它使用standalone文档类来生成图片PDF以及PNG图像TikZ

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

生成的PDF图像是(这是屏幕截图):

生成的 PDF 图像

生成的PNG图像为:

生成的 PNG 图像

为什么PNG图像有差异,错误的,尺寸比PDF文件大吗?

答案1

从概念上讲,位图没有大小,只有像素数。如手册中所述,standalone该类要求convert假设 300dpi,这样可以生成高分辨率图像以供打印,但事实上,pdftex 的默认图像分辨率为 72dpipng 文件可以存储其像素的预期大小但大多数系统都不会使用提示,即使不会,也不是所有系统都使用提示。

因此

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

或者

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

将与

 \fbox{\includegraphics{file.pdf}}

答案2

不,不是。这取决于你如何衡量。

在 MS Word 中测量:

在Word中放置的三种不同分辨率的图像:

在此处输入图片描述

打印时:

在此处输入图片描述

在 LaTeX 中测量:

代码:

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

PDF 查看器 100% 缩放后的屏幕测量结果:

在此处输入图片描述

网页测量:

您不能依赖 Web 浏览器上看到的 PNG 大小,因为它们处理图像的方式不同(看这里

分辨率为 1200 dpi 的 JPEG 图像已上传至 Imgur 并通过网络浏览器查看:

在此处输入图片描述

已将 300 dpi 的 PNG 图像上传至 Imgur 并通过 Web 浏览器查看:

在此处输入图片描述

50 dpi 的 JPEG 图像已上传至 Imgur 并通过网络浏览器查看:

在此处输入图片描述

如果您想在 Web 浏览器上看到正确的尺寸,您需要使用正确的 dpi 生成 PNG。请参阅以下练习:

我的屏幕是2560x1440。

屏幕水平尺寸:约23.5英寸

屏幕分辨率为 2560 点/23.5 英寸 = 每英寸 109 点

我生成了一个 dpi 大约为 110 的 PNG。

我使用网络浏览器测量屏幕上的水平尺寸:

在此处输入图片描述

答案3

用户standalone手册(v1.2 - 2015/07/15)解释了为什么生成的 PNG 图像没有预期的物理尺寸,并提供了正确设置这些尺寸的方法。

为什么 PNG 图像的物理尺寸不正确

根据第 15 页第 4.6.1 节“转换设置”

使用以下默认设置:[...] 密度为 300dpi

“dpi” 是“每英寸点数”的缩写,又称“每英寸像素数”(“ppi”)。为了在屏幕上显示时获得正确的尺寸,用于生成 PNG 的 ppi 必须等于屏幕的 ppi。

要了解屏幕的 ppi,请按照这个简单的方法维基百科上的像素密度页面。该方法包括使用一把尺子放在屏幕上来测量已知由一定数量的像素组成的线的长度。

如何确保 PNG 图像具有正确的物理尺寸

第 17 页的表 1 建议了两种方法来确保生成的 PNG 图像具有所需的物理尺寸。这两种方法都包括为convert文档类选项分配一个值,如下所示:

\documentclass[tikz,convert={...}]{standalone}
  1. 设置convert={density=<d>}<d>你的屏幕的 ppi 在哪里。

  2. 设置convert={size=<w>x<h>},其中<w>x<h>是已知 PNG 图像在屏幕上显示时具有所需物理尺寸的像素尺寸。

    在本例中,由于您说 PDF 图片的屏幕截图具有正确的物理尺寸,因此请使用其像素尺寸,即 137x50。如果您使用 macOS,则可以直接从 Finder 读取这些尺寸。

相关内容