Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Followup: Making an image into a pattern

29 views
Skip to first unread message

Darrin Cardani

unread,
Sep 25, 1998, 3:00:00 AM9/25/98
to
Thanks to Martin Bailey for his help with getting an image into a pattern
so I could apply an imagemask to it. For those of you who are interested, I
learned the following things in my search:

If you want to use a color image as a pattern, you must use the 5 operand
version of the colorimage command. It will not accept the dictionary
version of the command. Apparently this is because the colorimage command
does not require the current colorspace to be specified.

If you then want to apply an imagemask to it, you must also use the 5
operand version of imagemask, rather than the dictionary version. I don't
really understand why, but that's the way it is.

And you cannot use TilingType 2 in your pattern, I believe.

So my working code looks like this:

[...headers deleted...]
currentfile 4096 string
%%BeginBinary: 4107
readstring
[...4096 bytes deleted...]
%%EndBinary
pop
/ImageData exch def

/ImageDraw {
32 32 scale
32 32 8
[ 32 0 0 -32 0 32 ]
{ ImageData }
false 4
colorimage
} bind def

<<
/PatternType 1
/PaintType 1
/TilingType 1
/BBox [ 0 0 32 32 ]
/XStep 32
/YStep 32
/PaintProc {
begin
ImageDraw
end
}
>>
matrix
makepattern

/ImagePat exch def

/Pattern setcolorspace
ImagePat setcolor

72 72 scale

currentfile 128 string
%%BeginBinary: 139
readstring
[...128 bytes of mask data deleted...]
%%EndBinary
pop
/MaskData exch def
32 32 true [ 32 0 0 -32 0 32 ] { MaskData }
imagemask

showpage

I hope that's helpful to someone!

Darrin

--
Darrin Cardani

Angus Duggan

unread,
Sep 25, 1998, 3:00:00 AM9/25/98
to
fake_email@fake_address.com (Darrin Cardani) writes:

>
> Thanks to Martin Bailey for his help with getting an image into a pattern
> so I could apply an imagemask to it. For those of you who are interested, I
> learned the following things in my search:
>
> If you want to use a color image as a pattern, you must use the 5 operand
> version of the colorimage command. It will not accept the dictionary
> version of the command. Apparently this is because the colorimage command
> does not require the current colorspace to be specified.
>
> If you then want to apply an imagemask to it, you must also use the 5
> operand version of imagemask, rather than the dictionary version. I don't
> really understand why, but that's the way it is.
>
> And you cannot use TilingType 2 in your pattern, I believe.

You should be able to use TilingType 2. The tiling type is independent of the
contents of the pattern.

a.
--
Angus Duggan, Harlequin Inc, 301 Ravenswood Ave, | PSUtils 1.17 selects, n-up,
Suite 100, Menlo Park, CA 94025, U.S.A. | booklet & more. Anon ftp from
http://www.dcs.ed.ac.uk/home/ajcd/psutils/ | ftp.dcs.ed.ac.uk:pub/ajcd
http://www.tardis.ed.ac.uk/~ajcd/psutils/ | ftp.tardis.ed.ac.uk:users/ajcd

Darrin Cardani

unread,
Sep 28, 1998, 3:00:00 AM9/28/98
to
In article <uyar7z...@yosemite.menlo.harlequin.com>, Angus Duggan
<an...@harlequin.com> wrote:

> fake_email@fake_address.com (Darrin Cardani) writes:
>
> > And you cannot use TilingType 2 in your pattern, I believe.
>
> You should be able to use TilingType 2. The tiling type is independent of the
> contents of the pattern.

After rereading the section in the red book, I think what I originally read
was that the PaintType cannot be 2, which specifies an uncolored pattern.
If you're trying to use a color image, you must specify a PaintType of 1,
which means colored pattern.

Sorry for the confusion,
Darrin

--
Darrin Cardani

alamr...@gmail.com

unread,
Mar 7, 2013, 7:57:17 AM3/7/13
to
On Friday, September 25, 1998 12:30:00 PM UTC+5:30, Darrin Cardani wrote:
> Thanks to Martin Bailey for his help with getting an image into a pattern
> so I could apply an imagemask to it. For those of you who are interested, I
> learned the following things in my search:
>
> If you want to use a color image as a pattern, you must use the 5 operand
> version of the colorimage command. It will not accept the dictionary
> version of the command. Apparently this is because the colorimage command
> does not require the current colorspace to be specified.
>
> If you then want to apply an imagemask to it, you must also use the 5
> operand version of imagemask, rather than the dictionary version. I don't
> really understand why, but that's the way it is.
>
> And you cannot use TilingType 2 in your pattern, I believe.
>
Hello,
I am also working on the Patterns in PostScript.
My image Data size is more than 65535. How that can be done. Could you please provide a solution.

John Deubert

unread,
Mar 7, 2013, 8:55:43 AM3/7/13
to
Hi -

Issues 21-23 (December 2002 - February 2003) of the Acumen Journal
present a lengthy discussion of the using images (of arbitrary size) in
a PostScript form; the techniques presented apply also to using images
in a pattern.

The Journal is free for the downloading at
www.acumentraining.com/acumenjournal.html.

- John

--
========
John Deubert
Acumen Training
PostScript & PDF Engineering Classes & Consulting
www.acumentraining.com

Learn PostScript programming techniques
Read the free Acumen Journal
acumentraining.com/acumenjournal.html

John Deubert

unread,
Mar 7, 2013, 9:59:52 AM3/7/13
to
On 2013-03-07 12:57:17 +0000, alamr...@gmail.com said:

Hi, Darrin -

Actually, the modern versions of image and imagemask work perfectly
well with an image-based pattern. Here's an example:

=========== Cut here =============

/ImageData <
ff0000 ff0000 00ff00
00ff00 00ff00 0000ff
0000ff 0000ff ff0000
> def


/ImagePat <<
/PatternType 1
/PaintType 1
/TilingType 1
/BBox [ 0 0 9 9 ]
/XStep 12
/YStep 12

/DoImage {
/DeviceRGB setcolorspace
9 9 scale
<<
/ImageType 1
/Width 3
/Height 3
/BitsPerComponent 8
/ImageMatrix [ 3 0 0 -3 0 3 ]
/DataSource ImageData
/Decode [ 0 1 0 1 0 1 ]
>> image
} bind

/PaintProc {
begin
DoImage
end
}
>>
matrix
makepattern
def

/Pattern ImagePat setpattern

275 375 translate
72 72 scale

<<
/ImageType 1
/Width 50
/Height 50
/BitsPerComponent 1
/ImageMatrix [ 50 0 0 -50 0 50 ]
/DataSource currentfile
/ASCII85Decode filter
/LZWDecode filter
/Decode [ 0 1 ]
>>
imagemask
J3Vsg3$]7K#&$;kY]q,L"Nu?=!&.@P!X-u'3$Q^>KPe$sNko5'p\XY>!0T5cnjja6
IfG)9fY@f@%VIG45`ib]r"1#5J'MEZq?.:a&"p^jkR']arC`qETChaU*X;NaYU[tS
rF(3YJ%jh/Jbt&8!djtJ('\W9eIuLYj.H[IZK6+`[@cjpPZd*p^;&ATp'&$0_8B6W
(7AV9]/6KsT9De[:FA$(5GsLMp1AjQcVbhs2u!HV0%,8UHAeT!)$H>mi(YU*~>

showpage

=========== Cut here =============

I happened to have much of this code lying around in examples from
various classes I teach.

John Deubert

unread,
Mar 7, 2013, 10:16:17 AM3/7/13
to
Hmmm. I see that several of the less-than symbols got mangled by my
newsreader, so none of the dictionaries are closed. Odd. I assume you
can figure out where they go.

Here's a dropbox link to an unmangled version of the code:

https://dl.dropbox.com/u/29544294/ImagePatternExample.ps

I'll leave it there for a week or so.

- J

luser- -droog

unread,
Mar 11, 2013, 1:53:35 AM3/11/13
to
Uh, you did see the original message was from 1998, right?

John Deubert

unread,
Mar 11, 2013, 9:17:46 AM3/11/13
to
I can be remarkably unobservant sometimes.

Oh, well. Not the most embarrassing thing I've ever done.

Maybe he was still chewing on the problem. These things can obsess one,
you know.
0 new messages