imageMagick PDF 到 PNG:提高条形码可读性
imageMagick PDF to PNG: Increasing barcode readability
我是 imageMagick 的新手,我正在使用它将 PDF 运输标签转换为 PNG,但我失去了条形码的分辨率。如何提高可读性?
这是我使用的 imageMagick 命令的片段:
img.Resize(new MagickGeometry(800,0));
img.Threshold((Percentage) 60);
img.Write(outputPng);
结果如下:
这是我转换的实际PDF的截图
更新
这是修改后的代码片段,可以让我获得接近 1 比 1 的分辨率:
var settings = new MagickReadSettings {Density = new Density(200)};
using (var images = new MagickImageCollection())
{
images.Read(inputPdf, settings);
using (var img = images.AppendVertically())
{
img.Density = new Density(150);
img.Trim();
img.Quality = 72;
img.Sharpen(0, 1.0);
img.ColorType = ColorType.Bilevel;
img.Depth = 1;
img.Alpha(AlphaOption.Off);
img.Write(outputPng);
}
}
我有点生疏,但调整大小作为最后一个操作通常是个好主意,除非你确定尺寸是虚拟的并且只用于输出渲染。
另外,我的猜测是,这与PDF加载有关,而不是与PDF编写有关。要确认这一点,请将屏幕截图另存为 bmp/gif/jpg 并尝试相同的转换。
此外,请记住库首先是一个命令行工具,因此原始库的文档是主要来源。这是我发现的一件事:
这说明矢量对象对于 PDF 很重要,您需要在其中输入 density
光栅化像素密度的配置值。
我是 imageMagick 的新手,我正在使用它将 PDF 运输标签转换为 PNG,但我失去了条形码的分辨率。如何提高可读性?
这是我使用的 imageMagick 命令的片段:
img.Resize(new MagickGeometry(800,0));
img.Threshold((Percentage) 60);
img.Write(outputPng);
结果如下:
这是我转换的实际PDF的截图
更新 这是修改后的代码片段,可以让我获得接近 1 比 1 的分辨率:
var settings = new MagickReadSettings {Density = new Density(200)};
using (var images = new MagickImageCollection())
{
images.Read(inputPdf, settings);
using (var img = images.AppendVertically())
{
img.Density = new Density(150);
img.Trim();
img.Quality = 72;
img.Sharpen(0, 1.0);
img.ColorType = ColorType.Bilevel;
img.Depth = 1;
img.Alpha(AlphaOption.Off);
img.Write(outputPng);
}
}
我有点生疏,但调整大小作为最后一个操作通常是个好主意,除非你确定尺寸是虚拟的并且只用于输出渲染。
另外,我的猜测是,这与PDF加载有关,而不是与PDF编写有关。要确认这一点,请将屏幕截图另存为 bmp/gif/jpg 并尝试相同的转换。
此外,请记住库首先是一个命令行工具,因此原始库的文档是主要来源。这是我发现的一件事:
这说明矢量对象对于 PDF 很重要,您需要在其中输入 density
光栅化像素密度的配置值。