无法使 Ghostscript "viewraw.ps" 或 "viewrgb.ps" 程序运行(乱码输出)
Can't get Ghostscript "viewraw.ps" or "viewrgb.ps" programs to work (scrambled output)
过去,我使用 Ghostscript 附带的 "viewjpeg.ps" PostScript 程序将 JPEG 图像放入生成的 PDF 中,取得了不错的效果。现在我正在尝试对 bitmaps 做同样的事情,但我一直无法让它工作。我的直觉是,我需要的程序是 "viewraw.ps" 或 "viewrgb.ps,",我可以看到预期的参数与传递给 "viewjpeg.ps."
的参数略有不同
到目前为止,这是我所拥有的:
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -q -sDEVICE=pdfwrite -DNOSAFER -r200x200 -sOutputFile=o.pdf z:\home\dell\reporting\viewrgb.ps -c "( out002.bmp) 6800 viewrgb"
这与我想要的非常接近,但是我的位图(尽管显然 identifiable)在输出 PDF 中被打乱:垂直压缩,upside-向下,而且颜色有点不对。
我试图通过调整 "width" 参数(6800 以上)来解决这些问题。我的位图是 1,700 像素 wide,每个像素使用 4 个字节,因此 1,700 * 4 = 6,800 似乎是一个合乎逻辑的选择。我还尝试了 1,700(以像素为单位的宽度)和 54,400(每图像行的位数)。 5,100 (3 * 1,700) 似乎效果最好,但它仍然是错误的。
请注意,"viewjpeg.ps" 不需要 "width" 参数,因此我之前不必处理这个问题。 (正是对 "viewrgb.ps" 的检查让我意识到这个参数是必需的。)
任何人都可以发现我的错误,或者可以指出一个使用 "viewraw.ps" 或 "viewrgb.ps" 的示例吗?
你没有说(或者我没说)你的 'bitmaps' 是什么格式,你也没有提供一个例子来查看,所以我无法判断(或实验)。
您说您的输出是每个像素 4 个字节,所以它是 CMYK 或类似 RGBa 的格式。无论哪种方式,viewrgb 都无法正常工作,因为它只需要 3 个通道。目的是查看 Ghostscript bitrgb 设备的输出。
Viewraw 只是读取原始数据,直接图像样本,没有 header IIRC,它是 CMYK,所以除非你的 4 个字节是 CMYK,否则它不会是正确的要么。
因为这两个都是RAW格式,他们不期望header,如果你的图像格式包含header,那么它会被视为图像数据,这肯定会导致图片绘制错误
如果您错误地调用这两个 PostScript 程序,它们都会在后台显示使用信息。
这么旧的 Ghostscript (9.10) 版本不需要 -dNOSAFER。
-r 对 pdfwrite 几乎没有影响,当您将图像作为输入输入时,它根本没有任何影响;你可能应该忽略它。
过去,我使用 Ghostscript 附带的 "viewjpeg.ps" PostScript 程序将 JPEG 图像放入生成的 PDF 中,取得了不错的效果。现在我正在尝试对 bitmaps 做同样的事情,但我一直无法让它工作。我的直觉是,我需要的程序是 "viewraw.ps" 或 "viewrgb.ps,",我可以看到预期的参数与传递给 "viewjpeg.ps."
的参数略有不同到目前为止,这是我所拥有的:
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -q -sDEVICE=pdfwrite -DNOSAFER -r200x200 -sOutputFile=o.pdf z:\home\dell\reporting\viewrgb.ps -c "( out002.bmp) 6800 viewrgb"
这与我想要的非常接近,但是我的位图(尽管显然 identifiable)在输出 PDF 中被打乱:垂直压缩,upside-向下,而且颜色有点不对。
我试图通过调整 "width" 参数(6800 以上)来解决这些问题。我的位图是 1,700 像素 wide,每个像素使用 4 个字节,因此 1,700 * 4 = 6,800 似乎是一个合乎逻辑的选择。我还尝试了 1,700(以像素为单位的宽度)和 54,400(每图像行的位数)。 5,100 (3 * 1,700) 似乎效果最好,但它仍然是错误的。
请注意,"viewjpeg.ps" 不需要 "width" 参数,因此我之前不必处理这个问题。 (正是对 "viewrgb.ps" 的检查让我意识到这个参数是必需的。)
任何人都可以发现我的错误,或者可以指出一个使用 "viewraw.ps" 或 "viewrgb.ps" 的示例吗?
你没有说(或者我没说)你的 'bitmaps' 是什么格式,你也没有提供一个例子来查看,所以我无法判断(或实验)。
您说您的输出是每个像素 4 个字节,所以它是 CMYK 或类似 RGBa 的格式。无论哪种方式,viewrgb 都无法正常工作,因为它只需要 3 个通道。目的是查看 Ghostscript bitrgb 设备的输出。
Viewraw 只是读取原始数据,直接图像样本,没有 header IIRC,它是 CMYK,所以除非你的 4 个字节是 CMYK,否则它不会是正确的要么。
因为这两个都是RAW格式,他们不期望header,如果你的图像格式包含header,那么它会被视为图像数据,这肯定会导致图片绘制错误
如果您错误地调用这两个 PostScript 程序,它们都会在后台显示使用信息。
这么旧的 Ghostscript (9.10) 版本不需要 -dNOSAFER。
-r 对 pdfwrite 几乎没有影响,当您将图像作为输入输入时,它根本没有任何影响;你可能应该忽略它。