2016-12-16 3 views
2

Dans PLRM d'Adobe J'ai trouvé l'exemple suivant en utilisant l'opérateur imagemask. Cela fonctionne correctement avec Ghostscript.Erreur PostScript avec imagemask et données brutes

54 112 translate    % Locate lower-left corner of square 
120 120 scale     % Scale 1 unit to 120 points 
0 setgray      % Set current color to black 
24 23       % Specify dimensions of source mask 
true       % Set polarity to paint the 1 bits 
[24 0 0 -23 0 23]    % Map unit square to mask 
{< 003B00 002700 002480 0E4940 
    114920 14B220 3CB650 75FE88 
    17FF8C 175F14 1C07E2 3803C4 
    703182 F8EDFC B2BBC2 BB6F84 
    31BFC2 18EA3C 0E3E00 07FC00 
    03F800 1E1800 1FF800 >} 
imagemask 
showpage 

En guise d'exercice, j'ai essayé de réécrire l'exemple ci-dessus en utilisant un ImageType-1 dictionnaire et les données brutes, et enfin est venu avec ce code:

54 112 translate 
120 120 scale 
0 setgray 
<< 
    /ImageType 1 
    /Width 24 
    /Heigth 23 
    /BitsPerComponent 1 
    /Decode [1 0] 
    /ImageMatrix [24 0 0 -23 0 23] 
    /DataSource currentfile /ASCIIHexDecode filter 
>> 
imagemask 
003B00 002700 002480 0E4940 
114920 14B220 3CB650 75FE88 
17FF8C 175F14 1C07E2 3803C4 
703182 F8EDFC B2BBC2 BB6F84 
31BFC2 18EA3C 0E3E00 07FC00 
03F800 1E1800 1FF800> 
showpage 

Cependant, lors de l'exécution de cette Ghostscript I obtenez l'erreur suivante. Je me gratte toujours la tête pour trouver le bug, mais en vain. Comment peut-il être imagemask est indéfini? Ou est-ce que j'ai manqué quelque chose d'évident?

+0

Un indice du message d'erreur est le '--' ...' '' autour de 'imagemask'. Les traits d'union signifient que c'est l'opérateur * imagemask * qui frappe une erreur indéfinie (* dans * l'opérateur). Si c'était juste le nom nu, comme 'Erreur:/undefined in imagemask', cela signifierait que le nom n'a pas été défini. –

+0

@luserdroog ok, donc c'était l'opérateur 'imagemask' qui frappait l'erreur'/undefined' parce que 'Height' n'était pas défini dans le dictionnaire. –

+0

Un avantage des anciennes formes * proc * de 'image' et 'imagemask' est que vous pouvez échanger l'appel avec' exec' pour déboguer le processus .. –

Répondre

1

Je ne sais pas si cela est exactement le code que vous avez écrit, mais il y a une faute de frappe:

/Heigth 23 

qui devrait évidemment:

/Height 23 

Si je raison que , le fichier s'exécute et tire la dinde.

+0

omg. Je soupçonnais une erreur stupide comme celle-ci. Je vous remercie –