【问题标题】:ImageMagick: Transparent Backgrounds for JPEG, not PNGImageMagick:JPEG 的透明背景,而不是 PNG
【发布时间】:2012-12-13 06:24:54
【问题描述】:

我正在使用 ImageMagick 将 PDF 文件转换为 PNG。 (很多文本,所以我宁愿使用 PNG 而不是 JPEG。)我在 OS X 10.8.2 上执行此操作。

我尝试使用 Ghostscript,然后是 ImageMagick,就像 here 一样,我得到了灰色背景。我将它缩短为一行,因为 ImageMagick 可以处理 PDF 并尝试了这个:

 convert -background transparent -transparent white \
          Background-Page01.pdf TestClearX1.png

我已经尝试过使用 PNG 文件和 JPEG 文件。 (不管有没有-transparent white。)

如果是 JPEG,我可以得到白色背景(这可能很清晰,但在我的查看器中,我看不出来),但使用 PNG,我总是得到深色背景。作为测试,我想尝试生成 BMP,然后将其转换为 PNG,但它不会生成 BMP 文件。

如何获得 PNG 文件的透明背景?

如果这不可能,因为 JPEG 文件不适合文本,有没有更好的选择?

【问题讨论】:

  • PDF 本身是否有透明背景?另外,这些是多页 PDF 吗?
  • 单页 PDF。它们似乎是透明的背景。我用于测试的主要是文本(我有一个带图像的,我将在仅文本工作后使用)。我从 LibreOffice 生成它们。我创建了一个普通的文本文档 - 没有使用任何颜色(普通白色背景上的黑色字母)。我正在使用 4 页文档和 94 页文档。我已经为第一个文档的所有 4 页和第二个文档的几页生成了 1 页 PDF。
  • 刚刚测试过这个;假设 PDF 具有透明背景 convert foo.pdf bar.png 应该可以很好地生成透明 PNG。还测试了convert -transparent white foo.pdf bar.png(PDF 为白色背景)并得到了正确的结果。如果您仍然遇到问题,请确保您的 ImageMagick 安装是最新的,并且您没有不稳定的 PDF。
  • @Matt:知道如何验证 PDF 是否良好,或者有合适的背景吗?它们由 LibreOffice 生成。
  • 呃。尝试重新保存 PDF。在另一个程序中打开 PDF 并再次保存(如果您在 Mac 上,预览可以工作,如果您有 Adob​​e Acrobat Pro 或 Illustrator,这些可以在任何地方工作)。另一方面,只是为了涵盖所有基础,您说 PNG 是“黑暗的”——请确保这不是显示的背景:) 你能发布一个示例 PNG 吗?

标签: imagemagick png jpeg


【解决方案1】:

这不是答案,但 comment 部分的格式不允许合理的格式,所以我在这里提供它。

您提到了 OS X 中的 Preview 不能正确显示透明度的事实,这是正确的。为了解决这个问题,我制作了以下脚本,它将您想要查看的文件覆盖到像 Photoshop 那样的棋盘图案上。我将其保存为preview,然后在其上使用chmod +x preview 使其可执行。这是脚本:

#!/bin/bash
################################################################################
# preview
# Preview images using OSX "open" but overlay images on top of checkerboard 
# first so you can see transparency/transparent pixels, since Preview renders
# them grey :-(
################################################################################
for f in "$@"
do
   base=$(basename "$f")
   composite -compose Dst_Over -tile pattern:checkerboard "$f" "/tmp/$base"
   open -g "/tmp/$base"
done

这使您能够做到:

/.preview file1.png file2.gif

-g 选项也意味着Preview 也不会窃取焦点:-)

所以,不要看起来像这样:

看起来像这样:

【讨论】:

    【解决方案2】:

    在 LibreOffice 中导出 PDF 有两种方法,一种方法不提供任何警告。另一种方法是警告 PDF/A 不能有透明对象。问题是您使用的 PDF/A 文件不支持透明对象 - 这会导致您的 PNG 始终具有背景颜色。

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2012-10-05
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多