我正在尝试在postscript中写一个文档。
到目前为止,我已经能够编写简单的文本,并使用线条和形状。
我现在正试图在文档中添加一些图像。在线搜索后,我似乎找不到任何明确的方法来做到这一点。
下面的剪辑是一个问候世界:
%!PS
/Times
20 selectfont
20 800 moveto
(Hello World!) show
showpage
我想做的只是通过指定x和y坐标来插入图像(例如PNG,JPG,GIF)。
非常感谢任何帮助。
答案 0 :(得分:10)
有一个简单的方法,Postscript支持jpeg格式。如果您使用的是ghostscript,则可能必须使用-dNOSAFER选项来打开文件。这是一个例子:
gsave
360 72 translate % set lower left of image at (360, 72)
175 47 scale % size of rendered image is 175 points by 47 points
500 % number of columns per row
133 % number of rows
8 % bits per color channel (1, 2, 4, or 8)
[500 0 0 -133 0 133] % transform array... maps unit square to pixel
(myJPEG500x133.jpg) (r) file /DCTDecode filter % opens the file and filters the image data
false % pull channels from separate sources
3 % 3 color channels (RGB)
colorimage
grestore
答案 1 :(得分:2)
您可以从adobe下载the PostScript Language Reference, third edition(这是postscript的“圣经书”)。章 4.10图像将是一个很好的起点。
答案 2 :(得分:2)
使用convert之类的程序,然后删除它生成的任何额外代码。
答案 3 :(得分:0)
这是一个迟来的答案! -dNOSAFER
的问题使我无法使用其他解决方案,因此我执行了以下操作:
使用Python以二进制格式读取JPG文件并使其成为与/ASCIIHexDecode
兼容的字符串:
''.join(["%02x" % ord(c) for c in open(filename, "rb").read()])
然后,不要从后记文件中读取和解码图像文件,而是将上面计算出的字符串粘贴到后记文件中,并filter
,首先通过/ASCIIHexDecode
,然后是/DCTDecode
:< / p>
(ffd8ffe000104a46494600010102002700270000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc00011080010001003011100021101031101ffc400160001010100000000000000000000000000060507ffc40026100002020201030207000000000000000001020304051106071221001315163132414252ffc400160101010100000000000000000000000000070403ffc4002911000201030105090100000000000000000102030004210711123151531314324142617381d1d3ffda000c03010002110311003f00de311d00e0478be19acddc79b0f8ba734aef8aa8a59a4af1c9bdc96159beef275e4efd1ccfa5f2aceea2f8e09f41e7f252a47ab4c4093ba71ceced387b7828b724e87705b588c8478ecac114e28d89e36f83d65d7643ee7eb60b03a23f1f5dff002daaacf4ae479954df1e3d33fd2b593599628d89b0071d5fae9d3bc5750b8a3f1ae3cc9cd3031b4789c689236ce568de374af543ab21b51b2b03138208076a3cef4c8b935acaf3bb05c12685036e285e550b3bccf8a41c7b2327ce78c9a6188b917b2995ab20676a8102af6dc76624c680011f9d8f0005095da5b491ccaec303f0d4f292ebba01cecf23cc57ffd9>)
/ASCIIHexDecode
filter % ascii to bytes
0 dict
/DCTDecode % jpg to explicit
filter
上面的代码片段在否则会很有帮助的@ Hath995答案中替换了(myJPEG500x133.jpg) (r) file /DCTDecode filter
。
如果您想要的不是JPEG而是RGB的其他内容(即:您想要的后记没有解码器的东西),并且可以使用Python准备后记文件,则可以使用PIL,如下所示(它忽略了透明度字节,这是后记中的开/关操作):
import PIL.Image
i = PIL.Image.open("/tmp/from-template.png")
import itertools
''.join(["%02x" % g
for g in itertools.chain.from_iterable(
k[:3] for k in i.getdata())])
对于索引文件,我不知道,但是很难解决。