- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用独立包将 pdflatex 生成的 PDF 图像转换为 PNG 图像时遇到问题。
转换图像中文本的像素化渲染(PDF->PS->PNG,通过 gs 和 ImageMagick?)非常模糊,质量(清晰度、清晰度等)低于屏幕转储的原始 PDF。
我查看了这些 StackExchange 帖子:
并在独立包 manual 的指导下设置了我的工作流程.但是在对下面代码中的各种转换设置进行了大量实验性调整后,我无法提高输出的 PNG 图像的质量。
我玩过的设置示例:
command={}
选项,我还使用了 -quality 和 -set colorspace RGB 等选项(虽然我真的不知道我在这里做什么)我采用的另一种方法是尝试设置 TikZ 图片宽度和高度尺寸(以厘米为单位),使其与文档类参数中给出的转换尺寸一致(使用 dpi + 像素 -> 厘米转换器).
这些都不起作用!因此,我们将非常感谢使用独立包将 PDF 转换为 PNG 的任何帮助,该包可以保持图像中渲染文本的清晰度和清晰度。
作为引用,我使用的各种系统/应用程序的版本是:
\documentclass[preview,convert={density=300,size=900x300,outext=.png}]{standalone}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{every x tick label/.style={at={(1,0)}, yshift=-0.15cm, xshift=-0.0cm, inner sep=0pt, font=\normalsize}}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=-2.1*pi:2.1*pi, samples=1000,
width=30.0cm,
height=10.0cm,
axis x line*=middle,
x axis line style={densely dotted, opacity=0.75},
axis y line*=middle,
y axis line style={densely dotted, opacity=0.75},
ymin=-1.1,
ymax=1.1,
xtick={-6.28318530717959, -5.65486677646163, -5.02654824574367, -4.71238898038469, -4.39822971502571, -3.76991118430775, -3.14159265358979, -2.51327412287183, -1.88495559215388, -1.5707963267949, -1.25663706143592, -0.628318530717959, 0, 0.628318530717959, 1.25663706143592, 1.5707963267949, 1.88495559215388, 2.51327412287183, 3.14159265358979, 3.76991118430775, 4.39822971502571, 4.71238898038469, 5.02654824574367, 5.65486677646163, 6.28318530717959},
xticklabels={$-2\pi$, $-\frac{9\pi}{5}$, $-\frac{8\pi}{5}$, $-\frac{3\pi}{2}$, $-\frac{7\pi}{5}$, $-\frac{6\pi}{5}$, $-\pi$, $-\frac{4\pi}{5}$, $-\frac{3\pi}{5}$, $-\frac{\pi}{2}$, $-\frac{2\pi}{5}$, $-\frac{\pi}{5}$, $0$, $\frac{\pi}{5}$, $\frac{2\pi}{5}$, $\frac{\pi}{2}$, $\frac{3\pi}{5}$, $\frac{4\pi}{5}$, $\pi$, $\frac{6\pi}{5}$, $\frac{7\pi}{5}$, $\frac{\pi}{2}$, $\frac{8\pi}{5}$, $\frac{9\pi}{5}$, $2\pi$},
ytick=\empty,
enlargelimits=false, clip=true, axis on top]
\addplot [line width=0.5,cyan!50!black] {sin(deg(5*x))*cos(deg(x)};
\end{axis}
\end{tikzpicture}
\end{document}
最佳答案
为了调查这个问题,我首先从您发布的 tikz/tex 代码创建了一个 PDF(在将其复制到 tikz.tex
文件之后):
pdflatex tikz.tex
pdflatex tikz.tex
生成的 PDF 确实包含作为矢量 图形的插图,而不是光栅 图像。因此,pdfimages -list
不会检测到它。
然后我测试了两种将生成的 PDF 文件转换为 PNG 的方法:
convert
(它在您的背后使用 Ghostscript 作为“委托(delegate)”来处理 PDF 输入)convert
和 -density 720
我使用此命令从 PDF 创建 PNG:
convert -density 720 tikz.pdf tikz1.png
结果如下:
为什么我要使用 -density 720
?因为 720 PPI 是 Ghostscript 在创建 PDF 时使用的默认分辨率(除非您通过 -rNxM
在 gs
命令行)...
生成的图像大小为 374 kB
(PDF 为 49 kB
),width x height
尺寸为 8060 x 2390
像素。任何像素化(每当您创建 PNG 时都会发生!)在该分辨率下不会立即可见。
循环运行此命令 10 次的运行时间为 47 秒。
为了使用我使用的 Ghostscript 命令实现直接 PNG 转换:
gs -o tikz-gs.png -sDEVICE=pngalpha \
-dAlignToPixels=0 -dGridFitTT=2 \
-dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
tikz.pdf
这是生成的 PNG:
它的文件大小为 308 kB
,尺寸为 8060 x 2390
像素。
循环运行此命令 10 次的运行时间为 17 秒。
在解压所有对象后查看 PDF 文件的源代码后,我得出以下统计数据:
Total size of 5 embedded Type1 fonts................................ 38615 Bytes
Total size of v`/Contents` stream (mainly used by vector drawing)... 32630 Bytes
Rest of PDF structure ("overhead", if you want)..................... 5827 Bytes
---------------------------------------------------------------------------------
Total size of PDF (after uncompressing objects)..................... 77072 Bytes
根据 pdffonts
的输出,字体是 Type 1
(即 PostScript)字体。它们都作为子集嵌入:
pdffonts tikz.pdf
name type encoding emb sub uni object ID
-------------------------- ------------ ---------------- --- --- --- ---------
FXXUVH+CMSY10 Type 1 Builtin yes yes no 7 0
BCSIZL+CMR10 Type 1 Builtin yes yes no 8 0
SFJZUV+CMMI10 Type 1 Builtin yes yes no 9 0
WPSSUY+CMR7 Type 1 Builtin yes yes no 10 0
SYHYOI+CMMI7 Type 1 Builtin yes yes no 11 0
因为...
...字体(除非它们是光栅字体)是一种非常有效地为描绘文本字符的字形编码矢量形状的不同方式,
...字体+矢量图占PDF总大小的90%以上,
...根本没有办法让您从(压缩的)PDF 大小 49 kB
(未压缩的大小为 75 kB
)创建 PNG 光栅图像如果您想避免直接可见的“像素化”和“模糊”,那么它不会比原始 PDF 文件大几倍。
即使您使用 720 PPI 的分辨率(创建 308 kB
大小的 PNG),您在开始放大后仍然会看到像素化。PDF 不会出现这种像素化(因为它的所有形状都定义为矢量)。
以下三张图为截图:
tikz.pdf
文件的高缩放级别 (~1000%),tikz.png
,tikz72.png
:
用于坐标轴标注的文字大小只有10点左右。如果你光栅化这些,你将在任何低于 400 PPI 的分辨率下获得清晰可见的像素化,甚至可能高于...
我的 Ghostscript 是一个自编译的 9.17 GIT PRERELEASE
。我的 ImageMagick 是 6.9.0-0 Q16 x86_64
。
关于imagemagick - 通过 TikZ 和独立包从 PDF 转换的 PNG 图像中的模糊文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18480735/
我正在使用 cgi 包在 python 中编写脚本。根据我的代码中的一些检查,我需要发送 HTTP/1.1 200 OK\n 或 HTTP/1.1 404 Not Found\n 的响应。如果我打印上
如果有人熟悉,我将使用示例 Flocking 代码作为示例来玩 NLCommand("set population 1") NLCommand("setup") nruns <- 10 timedat
我最近注意到 R 中有一个我无法解释的奇怪行为。我在一些旧代码中有这个: 以下应生成从 01/1980 -> 01/2029 的月份列表,并且按预期工作: length(chron::seq.date
我想用我写的一些函数构建一个包。现在我的问题是,我不能将管道运算符 %>% 与 dplyr 一起使用。我用 roxygen2 创建了这个包。 如果我在没有 %>% 的情况下编写 dplyr 命令,一切
从 yaml 管道发布 NuGet 包时遇到问题,恢复/构建/打包一切正常,这只是推送失败,它似乎与推送为我正在推送的 Artefact feed 生成错误的 url 有关包到。 我已经能够在本地从
我使用 Visual Studio 2015 创建了一个 SSIS 包,它采用 Excel 文件并将其导入数据库。这项工作已经顺利进行了数周,但由于某种原因,今天早上失败了。当我将它作为自己的包运行时
我正在探索 the lens package 的使用用于分析和转换this AST ,但我不确定它是否适合这项任务。我认为有可能,但它的表面积太大且致密,我无法判断。 我想做的代表性操作如下。给定一个
我正在尝试使用 sendmailR 从 R 发送电子邮件包裹。当我在我的电脑上运行下面的代码时,它工作正常,并且我收到了电子邮件。但是,当我在 macbook pro 上运行它时,它失败并出现以下错误
我正在为 Meteor 使用 Useraccounts 包。 我已经配置好了,用户名/电子邮件+密码登录正在使用登录时显示的用户名(用户需要在注册时输入用户名)。 但是,当我单击社交登录按钮登录时,我
我在 Ubuntu 中使用 R。我意识到我在 /usr/local/lib/R/site-library/ 和 /home/sparhawk/R/x86_64-pc-linux-gnu- 中都安装了软
我正在尝试使用变量中的 RGB 值创建一个新的 Color 对象: http://golang.org/pkg/image/color/ package main import ( "fmt"
我正在尝试将一个 excel 文件读入 R。我需要从第 5 行开始读取 A 列和 C 列(没有 B)。这是我所做的: library(readxl) read_excel('./data/temp.x
考虑互联网上的一个文件(比如这个(注意 https 中的 s)https://evs.nci.nih.gov/ftp1/CDISC/SDTM/SDTM%20Terminology.xls 如何将文件的
我正在尝试转换表单的 json { "content": { "test_key": "test" }, "sender": "alice", "type": "ke
我正在使用 ng2-dnd包,简单的 html5 包,用于在列表上进行拖放以对其进行排序。 我只能弄清楚如何从数组中填充列表,而我需要从 JSON 中获取它。 这是我的代码: import { Com
下面是我正在处理的代码。它在运行时显示一条成功消息,但不显示 postman 表单中定义的值。相反,它在命令提示符中显示空格。 package main import ( "fmt" "github.
我正在使用提供程序包并有一个提供程序从全局变量 idea 获取其初始值,该变量是一个 json 数据列表,类型为 List>。 以下是它的代码,它按预期工作。 final ideasListProvi
我有这个 GraphQL 查询: query QuoteRequests($page: Int!) { getQuoteRequestsList(page: $page) { vehicl
我正在使用 rticle RStudio 打包使用 rmarkdown 在 R 中编写文章包裹。 在草稿模板中有一个选项 ... preamble: > % Any extra latex you
我正在 Azure Pipeline 中使用 Azure DevOps 任务 ArtifactoryNuGet@2。 我需要帮助将 NuGet 包从 Azure Devops 管道部署到 Artifa
我是一名优秀的程序员,十分优秀!