class ZSteg::Extractor

Public Class Methods

new(image, params = {}) click to toggle source

image can be either filename or ZPNG::Image

# File lib/zsteg/extractor.rb, line 11
def initialize image, params = {}
  @image = image.is_a?(ZPNG::Image) ? image : ZPNG::Image.load(image)
  @verbose = params[:verbose] || 0
end

Public Instance Methods

bit_indexes(bits) click to toggle source
# File lib/zsteg/extractor.rb, line 38
def bit_indexes bits
  if (1..8).include?(bits)
    # number of bits
    # 1 => [0]
    # ...
    # 8 => [7,6,5,4,3,2,1,0]
    bits.times.to_a.reverse
  else
    # mask
    mask = bits & 0xff
    r = []
    8.times do |i|
      r << i if mask[i] == 1
    end
    r.reverse
  end
end
extract(params = {}) click to toggle source
# File lib/zsteg/extractor.rb, line 16
def extract params = {}
  @limit = params[:limit].to_i
  @limit = 2**32 if @limit <= 0

  if params[:order] =~ /b/i
    byte_extract params
  else
    color_extract params
  end
end
pregenerate_primes(h) click to toggle source
# File lib/zsteg/extractor.rb, line 27
def pregenerate_primes h
  @primes ||= Set.new
  return if @primes.size >= h[:count]

  count = h[:count]
  Prime.each(h[:max]) do |prime|
    @primes << prime
    break if @primes.size >= count
  end
end