转换为 png(imagemagic)会导致基本图形出现错误

转换为 png(imagemagic)会导致基本图形出现错误

我有一张 tikz 图片,基本上是一些填充了简单命令的矩形,例如

\draw[black,fill=Black](0.8,0.55)--(1.2,0.55)--(1.2,0.9)--(0.8,0.9)--cycle;

没有什么花哨。

我将它们保存为独立文件,然后使用 imagemagicsconvert.exe运行

convert -density 900 mypdf.pdf mypng.png

以获得最佳质量。但是,有时渲染不正确,形状的填充和边框之间存在间隙,如您在一些图中看到的那样。请注意,这种情况也会发生在圆形和其他形状上。还请注意,这种情况有时才会发生,而且这种效果并非黑色所独有。

我怎样才能解决这个问题?

注意:针对单个命令/颜色组合的特定修复不起作用,因为我有各种形状和颜色,并且它们中的很多都表现出这种效果。我知道我可以做到\fill,但有不同的颜色边界和颜色背景。我明白“用更好的命令重做整个事情”可能是一个有效的答案,但这不是我问的那个。

在此处输入图片描述

在此处输入图片描述

梅威瑟:

\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}


\begin{document}
\begin{tikzpicture}

\draw[rounded corners=0.5mm,black,fill=Gray!10](0.1,0.1)rectangle (-0.2,0.9){};
\draw[rounded corners=0.5mm,black,fill=Gray!10](1.9,0.1)rectangle (2.2,0.9){};


\draw[black,fill=Gray!30](0,0)--(2,0)--(2,1)--(0,1)--cycle;
\draw[black,fill=Black](0.8,0.1)--(1.2,0.1)--(1.2,0.45)--(0.8,0.45)--cycle;
\draw[black,fill=Black](0.8,0.55)--(1.2,0.55)--(1.2,0.9)--(0.8,0.9)--cycle;
\draw[black,fill=red,opacity=0.5](0.85,0.6)--(1.15,0.6)--(1.15,0.85)--(0.85,0.85)--cycle;

\draw[fill=white] (-0.1,0.8) circle (0.04);
\draw[fill=white] (-0.1,0.2) circle (0.04);
\draw[fill=white] (2.1,0.8) circle (0.04);
\draw[fill=white] (2.1,0.2) circle (0.04);
\draw[black,thick,fill=Gray!10](0.1,0.1)rectangle (0.6,0.9){};

\draw[black,fill=Black](1.6,0.45)rectangle (1.8,0.55){};


\draw[fill=black] (1.6,0.2) circle (0.06);
\end{tikzpicture}
\end{document}

答案1

可以通过在转换过程中不使用抗锯齿来消除伪影。

例如直接使用ghostscript

gs -dSAFER -dNOPAUSE -dBATCH -sOutputFile=mypng.png -sDEVICE=pngalpha -r900 -dTextAlphaBits=1 -dGraphicsAlphaBits=1 mypdf.pdf

为了避免锯齿状边缘,您可以以更高的分辨率渲染它,然后重新采样。

相关内容