[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