Sha256: 3b3219d6fbc416ecae654e186e6c2dc2a6a94576a50d18c5277efcd7b24d772e

Contents?: true

Size: 1.14 KB

Versions: 13

Compression:

Stored size: 1.14 KB

Contents

#!/usr/bin/ruby

require 'vips'

image = Vips::Image.new_from_file ARGV[0]

module Vips
    class Image
        def wobble
            # this makes an image where pixel (0, 0) (at the top-left) has 
            # value [0, 0], and pixel (image.width, image.height) at the 
            # bottom-right has value [image.width, image.height]
            index = Vips::Image.xyz width, height 

            # make a version with (0, 0) at the centre, negative values up 
            # and left, positive down and right
            centre = index - [width / 2, height / 2]

            # to polar space, so each pixel is now distance and angle in degrees
            polar = centre.polar

            # scale sin(distance) by 1/distance to make a wavey pattern
            d = ((polar[0] * 3).sin * 10000) / (polar[0] + 1)

            # and back to rectangular coordinates again to make a set of 
            # vectors we can apply to the original index image
            index += d.bandjoin(polar[1]).rect

            # finally, use our modified index image to distort!
            mapim index 
        end
    end
end

image = image.wobble
image.write_to_file ARGV[1]

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ruby-vips-2.0.5 example/wobble.rb
ruby-vips-2.0.4 example/wobble.rb
ruby-vips-2.0.3 example/wobble.rb
ruby-vips-2.0.2 example/wobble.rb
ruby-vips-2.0.1 example/wobble.rb
ruby-vips-2.0.0 example/wobble.rb
ruby-vips-1.0.6 example/wobble.rb
ruby-vips-1.0.5 example/wobble.rb
ruby-vips-1.0.4 example/wobble.rb
ruby-vips-1.0.3 example/wobble.rb
ruby-vips-1.0.2 example/wobble.rb
ruby-vips-1.0.1 example/wobble.rb
ruby-vips-1.0.0 example/wobble.rb