考虑以下 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
图像是(这是屏幕截图):
生成的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}
设置
convert={density=<d>}
,<d>
你的屏幕的 ppi 在哪里。设置
convert={size=<w>x<h>}
,其中<w>x<h>
是已知 PNG 图像在屏幕上显示时具有所需物理尺寸的像素尺寸。在本例中,由于您说 PDF 图片的屏幕截图具有正确的物理尺寸,因此请使用其像素尺寸,即 137x50。如果您使用 macOS,则可以直接从 Finder 读取这些尺寸。