class ShatteredMachine::Defect

Use the defect algorithm from pnglitch on a given png image.

Public Class Methods

new(options = {}) click to toggle source

@param options [Hash] options for defect algorithm

# File lib/shattered_machine/defect.rb, line 8
def initialize(options = {})
  @random = options[:random] || false
  @iterations = options[:iterations] || 1
end

Public Instance Methods

call(input_image, output_image) click to toggle source

@param input_image [string] path for input image @param output_image [string] path for output defected image @return [boolean] status of defect

# File lib/shattered_machine/defect.rb, line 16
def call(input_image, output_image)
  PNGlitch.open(input_image) do |png|
    filtered_glitch(png).save output_image
  end
  output_image
end

Private Instance Methods

filtered_glitch(png) click to toggle source
# File lib/shattered_machine/defect.rb, line 25
def filtered_glitch(png)
  png.glitch do |data|
    if !@random
      data.gsub(/\d/, '')
    else
      @iterations.times do
        data[rand(data.size)] = ''
      end
      data
    end
  end
end