Sha256: 6ecb149c7a49b9baeef019e5a498259360aac6d3b28b723baccbdcbe2dcec0c3
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
module ChunkyPNG class Canvas # The ChunkyPNG::Canvas::Resampling module defines methods to perform image resampling to # a {ChunkyPNG::Canvas}. # # Currently, only the nearest neighbor algorithm is implemented. Bilinear and cubic # algorithms may be added later on. # # @see ChunkyPNG::Canvas module Resampling # Resamples the canvas. # @param [Integer] new_width The width of the resamples canvas. # @param [Integer] new_height The height of the resamples canvas. # @param [ChunkyPNG::Canvas] A new canvas instance with the resamples pixels. def resample_nearest_neighbor!(new_width, new_height) resampled_image = self.class.new(new_width.to_i, new_height.to_i) width_ratio = width.to_f / new_width.to_f height_ratio = height.to_f / new_height.to_f pixels = [] for y in 1..new_height do source_y = (y - 0.5) * height_ratio + 0.5 input_y = source_y.to_i for x in 1..new_width do source_x = (x - 0.5) * width_ratio + 0.5 input_x = source_x.to_i pixels << get_pixel([input_x - 1, 0].max, [input_y - 1, 0].max) end end replace_canvas!(new_width.to_i, new_height.to_i, pixels) end def resample_nearest_neighbor(new_width, new_height) dup.resample_nearest_neighbor!(new_width, new_height) end alias_method :resample, :resample_nearest_neighbor alias_method :resize, :resample end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
chunky_png-1.0.1 | lib/chunky_png/canvas/resampling.rb |
chunky_png-1.0.0 | lib/chunky_png/canvas/resampling.rb |
chunky_png-1.0.0.rc2 | lib/chunky_png/canvas/resampling.rb |