Re: image is not graphics
- To: mathgroup at smc.vnet.net
- Subject: [mg110945] Re: image is not graphics
- From: Maxim <m.r at inbox.ru>
- Date: Tue, 13 Jul 2010 05:26:48 -0400 (EDT)
- References: <i16vn8$ivv$1@smc.vnet.net>
On Jul 9, 6:04 am, Alessandro <alexxx.ma... at gmail.com> wrote:
> I have to admit that I'm really tired with Mathematica's assumption that
> "Image is not a graphics primitive or directive":
> I lost track of how many times I received that annoying error, due to
> this stupid internal dichotomy.
>
> At the moment I get the error since I'm trying to set in some way the
> output of the composition of two images with ImageSize, so I tried:
>
> Print[Graphics[ImageCompose[bi, Graphics[Locator[{0, 0}, loc]],
> {nx/2 - b, ny/2 + a}], ImageSize -> 300]],
>
> Seems that I cannot put Graphics around ImageCompose, since the latter
> returns an image which <sarcasm> as we all know is not a Graphics
> object... </sarcasm> so how do I use ImageSize?
>
> I'll be grateful to anybody who will help me here,
> but really this kind problem is happening more and more often - I
> believe that some rethinking of the graphics would be appreciated...
>
> thank you
>
> alessandro
You can either convert Image to Raster or put Image inside Inset:
img = Image[.5 - .5 DiagonalMatrix[ConstantArray[1, 190], 10, 200]]
Show[Image`ToGraphicsRaster@img,
Graphics[{Red, Line[{{50, 160}, {150, 60}}]}],
BaseStyle -> "ImageGraphics", ImageSizeRaw -> {200, 200}]
DynamicModule[{p = {50, 160}},
Graphics[{Inset[img, Automatic, Automatic, 200],
Inset[Dynamic@p, ImageScaled at {.75, .75}], {Red,
Line[Dynamic@{p, p + {100, -100}}]}, Locator[Dynamic@p]},
PlotRange -> {{0, 200}, {0, 200}}, ImageSize -> 200,
BaseStyle -> "ImageGraphics", ImageSizeRaw -> {200, 200}]]
If you just need a locator, you can also use LocatorPane.
Maxim Rytin
m.r at inbox.ru