我的Postscript如何绘制从EPS文件中嵌入的单色(黑/白)图像,使图像的黑色部分以50%的值显示?
我有一个单色的EPS文件,如下所示:
此图像嵌入到Postscript文件中,然后将其绘制。绘制时,我想要打印或显示图像,使图像的黑色部分绘制为50%灰色,如下所示:
使用https://stackoverflow.com/a/16405528/238886:
中显示的技术将EPS嵌入到Postscript中/ImageData
currentfile
<< /Filter /SubFileDecode
/DecodeParms << /EODString (*EOD*) >>
>> /ReusableStreamDecode filter
[-->PUT YOUR EPS HERE<--]
*EOD*
def
/IDForm
<< /FormType 1
/BBox [154 321 441 521]
/Matrix [ 1 0 0 1 0 0]
/PaintProc
{ pop
/ostate save def
/showpage {} def
/setpagedevice /pop load def
ImageData 0 setfileposition ImageData cvx exec
ostate restore
} bind
>> def
画得像这样:
gsave
IDForm execform
grestore
我可以用 execform 包围什么来使黑/白图像以50%的值打印/显示?
答案 0 :(得分:2)
这实际上取决于EPS文件中使用的操作。你可以像这样重新定义 setgray :
/setgray_orig /setgray load def
/setgray { 0.9 gt {1.0}{0.5} ifelse setgray_orig } bind def
然后在退出时重新定义它:
/setgray /setgray_orig load def
现在这取决于使用setgray可能你的eps正在使用 sethsbcolor , setrgbcolor , setcmykcolor 等等。如果是这样你应该包裹那些。小心这些东西。
请注意,将所有灰色定义为0.5是不够的,因为有人可能会涂白色以填充区域,因此也必须考虑。
Ammendum:你也可以定义setgray inisde / ostate save def 和 ostate restore 指令然后你不需要单独卸载功能。