【问题标题】:ImageMagick Pdf to JPG bad qualityImageMagick Pdf to JPG 质量差
【发布时间】:2018-01-04 16:48:11
【问题描述】:

我无法通过使用 ImageMagick 将 PDF 转换为图像来获得良好的色彩质量。

 MagickReadSettings settings = new MagickReadSettings();
        settings.Verbose = true;
        settings.Density = new Density(600, 600);

        MagickImageCollection images = new MagickImageCollection();
        images.Read("C:\\" + Path.GetFileName(fileUrl));
        List <string> files = new List<string>();
        for (var x = 0; x < images.Count; x++)
        {
            images[x].Quality = 100;
            images[x].BitDepth(24);
            images[x].Contrast(true);
            images[x].Resize(3675, 2400);
            images[x].Write("C:\\websites\\FlyerEditor2\\FlyerEditor\\src\\assets\\" + Path.GetFileNameWithoutExtension(fileUrl) + "-" + (x + 1) + ".jpeg");
            files.Add("assets/" + Path.GetFileNameWithoutExtension(fileUrl) + "-" + (x + 1) + ".jpeg");
        }

cropped screenshot from pdf

jpg from pdf using imageMagick

【问题讨论】:

  • 请显示输入和输出图像示例,以便我们了解您所说的颜色质量不佳是什么意思。尝试在对比和调整大小后设置质量和位深度。在一张图片上尝试您的代码。那会失败吗?试试等效的命令行代码?那会失败吗?如果是这样,则显示该命令行。
  • 好吧,也许我搞砸了,我在上面提供了图片的链接
  • 不知道如何自动显示图片
  • @fmw42 我想嵌入图像需要 10 个代表
  • 如果您从 PDF 开始,您应该发布指向该 PDF 的链接而不是屏幕截图,以便能够使用您的原始 PDF 进行测试。 ImageMagick 也使用 Ghostscript 来处理 PDF 文件。你的 Ghostscript 是最新的吗?你的 ImageMagick 和 Ghostscript 是什么版本?

标签: pdf imagemagick imagemagick.net


【解决方案1】:

如果使用python3,可以尝试使用wand。

在终端:

brew install imagemagick@6
pip install wand

在python中:

from wand.image import Image
pdf_file = '.../example/a.pdf'

def convert_pdf_to_jpg(file_name, pic_file, resolution=120):
    with Image(filename=file_name, resolution=resolution) as img:
        print('pages = ', len(img.sequence))
        with img.convert('jpeg') as converted:
            converted.save(filename=pic_file)

【讨论】:

    【解决方案2】:

    好的,这个问题与 imageMagick 无关。这是一个简单的彩色托盘问题。默认情况下将pdf转换为jpeg使用cmyk,而web标准是RGB

    【讨论】:

    • ImageMagick 不一定如此,除非 PDF 已经是 CMYK。 ImageMagick 将保留色彩空间,除非在将 PDF 转换为 JPG 时要求更改它。因此,在阅读 PDF 之前,OP 应该添加等效的 -colorspace sRGB(或非常旧的 Imagemaick 版本的 RGB)。
    【解决方案3】:

    我发现 imagemagick 在 Linux 和 Windows 之间对色彩空间的转换处理存在重大差异。

    使用命令

    convert -density 300 -colorspace RGB my.pdf my.jpg

    convert -density 300 -colorspace sRGB my.pdf my.jpg

    在 Linux 中,-colorspace sRGB 和 -colorspace RGB 都生成图像,其中对比度和调色板是原始图像的主要转移,对比度增加并且颜色与原始图像相差甚远。

    在 Windows 中,如果不完美,-colorspace sRGB 和 -colorspace RGB 都是可以接受的。

    【讨论】:

      猜你喜欢
      • 2015-01-16
      • 2013-03-24
      • 1970-01-01
      • 2013-02-20
      • 2013-10-11
      • 2018-10-16
      • 1970-01-01
      • 2020-11-11
      • 2014-10-29
      相关资源
      最近更新 更多