First test for Infinite Zoom
Wilhelm Sanke
sanke at hrz.uni-kassel.de
Tue Nov 17 13:50:21 EST 2009
Alejandro,
I finally found the time to look at your "Infinite Zoom" stack. After
some changes to your code - I hope they were the right ones, i.e. not
being counterproductive to your own intentions - I managed to start your
stack, but using 6 images of my own in a folder "images"
I understand that in your stack "Zoom_infinite.rev" you "zoom out" a
sucession of images in a stepwise fashion to achieve a decreasing size
of the images which finally converge towards an "infinite" point, and
after that you start all over again with a big-sized image.
At first, before I had tried your stack, my understanding had been that
your perspective was how to implement an "infinitely" continuing zoom
into or out of images (the latter of which, decreasing the size of an
image until it vanishes, would be of course quite simple). I therefore
looked at a number of scripts for (proportional) resizing of images I
had tried in various image-processing stacks.
What I am going to mention here, may well beside your specific point of
view concerning "infinite zoom" and meet with limited interest from your
side.
Nevertheless, here are some observations mainly concerning "infinite
zooming in":
1. The only procedure with which you can really "zoom-in infinitely"
into an image is to take a continuing and everlasting succession of
snapshots from a smaller rect of an image.
Place a rectangle graphic (the graphic can be even hidden) on top of an
image that has its "Lock Location" set to true (to preserve the size of
the image) and then apply the following two-liner:
on mouseUp
put the rect of grc "select" into trect
export snapshot from rect(trect) of img "test" to img "test" as PNG
end mouseUp
You could also put the snapshot line inside a repeat loop to achieve a
stepwise zooming-in effect remotely similar to the effect in your stack,
but in this example with only one image. The "quality" of the zoomed-in
images will of course depend on the set "resizequality" of the image.
Although you indeed could continue such a procedure "forever", it makes
sense only up to a certain point.
2. On the "slides page" of my stack
<http://www.sanke.org/Software/ThumbsAndSlides09.zip>
you can enlarge or shrink the selected images proportionally in steps.
If - when enlarging and therefore "zooming in" in the visible windows -
you reach a size of about
width = 18000 pixels, height = 14000 pixels
Revolution will crash immediately and silently without an error message,
simply vanishing from the screen, stack and IDE (Tested on WindowsXP
with Rev 3.5 and 4.0).
3.On the slideshow card of my old sample stack
<http://www.sanke.org/Software/SlideShow-Win.zip>
you can smoothly and proportionally zoom in and out of an image using a
slider. I have restricted the maximal size here to about 3000 x 2500.
The smoothness of the zooming procedure ist best with the resizequality
set to "normal". "Good" for the resizequality is still smooth and
tolerable on a fast computer, with "best" the zooming process begins to
slow down considerably in the upper size range.
To test the "crash limits" found above in example 2 I put an image and a
zoom-slider on a card - with the end value of the scrollbar set to
19000 and zooming an image with equal values for width and height.
With "normal" resize quality the zooming was nearly smooth up to the
value of 4000. Above 4000 the zooming process became increasingly more
jerky.
With the resizequality set the to "best", zooming above 4000 was
virtually impossible, whereas zooming stepwise in the "ThumbsAndSlides"
stack occurred without a noticeable time lag even with resizequality
"best" and up to the crash size of 18000 X 14000.
When using the zoom-slider, the crash of Rev - as described above -
occurs at an image size of about 16000 X 16000, meaning that Revolution
can "accommodate" images up to 256 million pixels, at least if there are
blown up to such a size inside Revolution.
Regards,
Wilhelm Sanke
<http://www.sanke.org/MetaMedia>
More information about the use-livecode
mailing list