将大型光栅图形图像(位图、PNG、JPEG 等)转换为非矢量 postscript

Posted

技术标签:

【中文标题】将大型光栅图形图像(位图、PNG、JPEG 等)转换为非矢量 postscript【英文标题】:Convert large raster graphics image(bitmap, PNG, JPEG, etc) to non-vector postscript 【发布时间】:2010-04-29 04:19:43 【问题描述】:

如何将大图转换成postscript?

我曾经将位图转换为 HEX 代码并使用彩色图像进行渲染。它适用于小图标,但是当我尝试嵌入更大的图像时,我在 ghostscript 中遇到了 /limitcheck 错误。 Ghostscript中的位图似乎有内存限制。

我正在寻找一种解决方案,它可以在没有 3rd 方/预处理的情况下运行,而不是 ghostscript 本身。

【问题讨论】:

【参考方案1】:

Convert 来自 ImageMagick 似乎逐行读取编码的图像数据。在示例图像上尝试并读取 PS 输出。

【讨论】:

我想自己实现逻辑,而不是依赖于第 3 方。那么,您是否建议我阅读 Convert 的源代码? 不,看看 Convert 生成了什么。 我对它生成了什么不感兴趣,但它是如何生成的。 我的意思是,看一下 Convert 输出的 PS 代码。您可能能够弄清楚它是如何工作的,然后自己使用它。 这可能是另一个第三方依赖。【参考方案2】:

免费矢量图形程序InkScape 会将您的位图转换为嵌入转换后图形的易于理解的代码。

我们最近遇到了一个问题,我们将 postscript 代码从大型机发送到打印机。我们尝试使用 ImageMagik 对其进行转换,并让结果在 GhostScript 中工作,但我们使用的大型机语言在代码中存在大型机到打印机的传输问题。 InkScape 转换更简单、更基础,我们能够轻松识别和删除临时代码。使用 ImageMagik 转换器 2 个月的图形问题在 3 小时内用新的 InkScape 图形解决了。

我认为您会对 InkScape 的结果感到满意,无论您是要转换图像还是拥有一些简单的 Postscript 图形示例。此外,如果您正在构建转换器,InkScape 是开源的!

【讨论】:

【参考方案3】:

Postscript 中的图片本身没有内存限制;但大多数 Postscript 解释器使用 16 位字段来表示复合对象的大小,因此所有字符串和数组(可能还有 dicts)都被限制为 65536 个条目。

因此,一个常见的技巧(Adobe 自己在蓝皮书中向我们展示了)是图像(或彩色图像)数据采集过程从源文件中预读并以较小的字符串勺子馈送数据.但是您可以使用65536 string(为了“安全”,可能会稍微低一点)在每次调用时铲除更多数据。

《绿皮书》是最好的 Adob​​e 资源,可以帮助您在设计 PS 程序时考虑速度或大小(而不仅仅是“让它正常工作”)。如果您有更多的处理能力和更窄的带宽,也许您应该在数据采集过程中压缩所有内容并解压缩。

【讨论】:

以上是关于将大型光栅图形图像(位图、PNG、JPEG 等)转换为非矢量 postscript的主要内容,如果未能解决你的问题,请参考以下文章

openCV学习——图像读取显示输出

在浏览器中将 SVG 转换为图像(JPEG、PNG 等)

关于Android中使用SVG特性的探索与总结

位图保存 jpeg 失败但 png 可以,因为 comments 属性

PNG、JPEG、BMP等几种图片格式详解(一)—— PNG

Vectoraster 7.4.6 | 光栅图案和半色调