2

大きな画像を変換してポストスクリプトに埋め込む方法は?

以前は、ビットマップをHEXコードに変換し、colorimageでレンダリングしていました。小さなアイコンでも機能しますが、少し大きな画像を埋め込もうとすると、ghostscriptで/limitcheckエラーが発生します。ghostscriptのビットマップにはメモリ制限があるようです。

ゴーストスクリプト自体以外のサードパーティ/前処理なしで実行できるソリューションを探しています。

4

3 に答える 3

2

Convert from ImageMagick は、エンコードされた画像データを 1 行ずつ読み取るようです。サンプル画像で試して、PS 出力を読んでください。

于 2010-05-07T11:00:51.747 に答える
1

Postscript には、画像自体のメモリ制限はありません。しかし、ほとんどの Postscript インタープリターは、複合オブジェクトのサイズに 16 ビット フィールドを使用するため、すべての文字列と配列 (おそらく dict も) は 65536 エントリに制限されます。

このような理由から、一般的なトリック (Adobe 自身が Blue Book で示した) は、画像 (またはカラー画像) データ取得手順でソース ファイルから先読みし、データを小さな文字列にスプーン フィードすることです。ただし、65536 string(「安全」にするために少し低いかもしれません)を使用して、呼び出しごとにより多くのデータをシャベルすることができます。

Green Book は、PS プログラムを (単に「正しく動作させる」のではなく) 速度やサイズを設計する際に考慮すべき点について、Adobe が提供する最良の情報源です。処理能力が高く、帯域幅が狭い場合は、すべてを圧縮し、データ取得手順で解凍する必要があります。

于 2012-09-21T04:10:43.593 に答える
1

フリーウェアのベクター グラフィックス プログラムである InkScapeは、ビットマップを、変換されたグラフィックスに埋め込まれた簡単に理解できるコードに変換します。

最近、メインフレームからプリンターにポストスクリプト コードを送信する際に問題が発生しました。ImageMagik で変換を試みたところ、GhostScript で動作する結果が得られましたが、使用しているメインフレーム言語では、メインフレームからプリンターへのコードの送信に問題がありました。InkScape の変換は、はるかに単純で基本的なものであり、即時コードを簡単に特定して削除することができました。ImageMagik コンバーターのグラフィックで 2 か月かかっていた問題は、新しい InkScape グラフィックで 3 時間で解決されました。

画像を変換したいのか、単純な作業 Postscript グラフィックスの例を持っているのかに関係なく、InkScape の結果に満足していただけると思います。また、コンバーターを構築している場合、InkScape はオープン ソースです。

于 2010-06-11T18:34:46.883 に答える