如何遮蔽单色图像

时间:2014-03-12 14:19:27

标签: image postscript eps

我的Postscript如何绘制从EPS文件中嵌入的单色(黑/白)图像,使图像的黑色部分以50%的值显示?


我有一个单色的EPS文件,如下所示:

enter image description here

此图像嵌入到Postscript文件中,然后将其绘制。绘制时,我想要打印或显示图像,使图像的黑色部分绘制为50%灰色,如下所示:

enter image description here

使用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%的值打印/显示?

1 个答案:

答案 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 指令然后你不需要单独卸载功能。