[magick-users] Re: Magick-users Digest, Vol 56, Issue 2
Victor Rosillo
victorrosillo at gmail.com
Mon Sep 3 12:22:27 PDT 2007
Thanks a lot Anthony;
I am sorry I didn't make myself clear :-(
I do not want to make a cinematic morph using RMagick,
i am familiar with that effect and it is not my purpose.
I do want to make a "color morphing transform" between two images;
that is more like a blend or a dissolve from smallimage.jpg to
bigimage.jpg and
i want to do it in 8 frames having as a final file a .gif ; so that
is why I am using the code below
and 'morph' as the basis for it.
I am running centos 4.5 and ruby 1.8.6 and all current imagemagic and
RMagick libs...
> Message: 1
> Date: Sun, 2 Sep 2007 22:17:50 -0500
> From: Victor Rosillo <victorrosillo at gmail.com>
> Subject: [magick-users] Morph two images of different size
>
> I need to morph two given images of different size:
>
> smallimage.jpg (640x480 pixels at 72dpi) (no alpha channel)
> bigimage.jpg (1024x768pixels at 72dpi) (no alpha channel)
>
> I need to start the morph with smallimage.jpg
> on top and at the center of bigimage.jpg
> the morph has to happen in 8 frames, at the end, in frame 8,
> bigimage.jpg will be seen and smallimage.jpg will have disappeared.
>
> I'm near from getting the correct effect, but still not quite there
> yet,
> I get a black border on the four sides of the smallimage.jpg
> instead of a transparent border; so that the background image that is
> the bigimage.jpg can't be seen correctly.
>
> This I do not want, I want smallimage.jpg to mantain it's smaller size
> on center of bigimage.jpg and it's four border sides to be
> transparent, and have it
> morph and disappear in 8 frames, so it looks something like this:
>
> Frame 1
> --------------------------------------------------
> | bigimage.jpg |
> | |
> | |
> | -------------------------- |
> | | smallimage.jpg | |
> | | | |
> | | covers this | |
> | | part of | |
> | | bigimage.jpg | |
> | -------------------------- |
> | |
> | |
> | |
> --------------------------------------------------
> .
> .
> .
> .
> Frame 8
> --------------------------------------------------
> | bigimage.jpg |
> | |
> | |
> | |
> | |
> | |
> | smallimage.jpg |
> | has |
> | disappeared |
> | |
> | |
> | |
> | |
> --------------------------------------------------
>
> This is the code I have, I would appreciate help:
>
> #! /usr/local/bin/ruby -w
>
> require 'RMagick'
> include Magick
>
> begin
> img1 = Image.read("smallimage.jpg").first
> rescue Magick::ImageMagickError
> puts "ERROR: " + $! + "\n"
> puts "#{$0}: ImageMagickError - #{$!}"
> end
>
> begin
> img2 = Image.read("bigimage.jpg").first
> rescue Magick::ImageMagickError
> puts "ERROR: " + $! + "\n"
> puts "#{$0}: ImageMagickError - #{$!}"
> end
>
> bigmask = Magick::Image.new(img2.columns, img2.rows)
> { self.background_color = "black" }
> bigmask.matte = false
>
> smallmask = Magick::Image.new(img1.columns, img1.rows)
> smallmask.matte = false
>
> maskok = Magick::Image.new(img2.columns, img2.rows)
> { self.background_color = "black" }
> maskok.matte = true
> maskok = bigmask.composite(smallmask, CenterGravity,
> OverCompositeOp)
>
>
> imagewmask = Magick::Image.new(img2.columns, img2.rows)
> imagewmask.matte = true
>
> imagewmask = imagewmask.composite(img1, CenterGravity,
> OverCompositeOp)
> imagewmask = imagewmask.composite(maskok, CenterGravity,
> CopyOpacityCompositeOp)
>
> img1 = imagewmask
>
> images = Magick::ImageList.new
>
> images.push(img1)
> images.push(img2)
>
> morph = images.morph 8
> morph.delay = 12
> morph.iterations = 3600
>
> morph.write "morphedimage.gif"
> GC.start
>
> exit
>
> --------------------------
>
>
>
>
>
>
> ------------------------------
>
> Message: 2
> Date: Mon, 03 Sep 2007 15:00:49 +1000
> From: Anthony Thyssen <anthony at griffith.edu.au>
> Subject: Re: [magick-users] Morph two images of different size
> To: ImageMagick User List <magick-users at imagemagick.org>
> Message-ID: <200709030500.l8350nPO004430 at wraith.itc.griffith.edu.au>
>
> The -morph is not a true 'morph' as you see in movies. It is only
> a color morphing trasnform. Objects in the image doed not 'move'.
>
> For that you need a much more complex bit of software which allows you
> to specify what parts of the first image is to match up to the
> parts in
> the final image. That is 'warp' merge the two images as well as
> color
> merge the images.
>
> For that I suggest you look at the Xmorph program.
>
>
> That is not to say IM can't do that. It just does not have the
> facilities to do this simply. YET.
>
> The newest developments in the Distortion Operators, may in the future
> allow things such as true image morphing (pixel warping and well as
> color transitions.
>
> The same development will also allow for the (eventual) addition of
> panorama image overlaying (overlaying multiple photos of a scene to
> create a larger image), though that will also require 'image
> registration' to locate simular point pairing for distorted overlays.
>
> For some examples of new additions in distortions see.
>
> General Distortion Operators
> http://www.imagemagick.org/Usage/distorts/#distort
>
> At this moment I am working on additional sub-functions for a major
> quality improvement in the output results.
>
>
> Anthony Thyssen ( System Programmer ) <A.Thyssen at griffith.edu.au>
>
> ----------------------------------------------------------------------
> -------
> `` I've heard of hunt-and-peck typing,
> but his is more search-and-destroy! ''
>
> ----------------------------------------------------------------------
> -------
> Anthony's Home is his Castle http://www.cit.gu.edu.au/
> ~anthony/
>
More information about the Magick-users
mailing list