module ChunkyPNG::Canvas::PNGEncoding

def encode_png_scanline_paeth(original_bytes, previous_bytes, pixelsize = 3)

Parameters:
  • () --
def encode_png_scanline_paeth(original_bytes, previous_bytes, pixelsize = 3)
  encoded_bytes = []
  for i in 0...original_bytes.length do
    a = (i >= pixelsize) ? original_bytes[i - pixelsize] : 0
    b = previous_bytes[i]
    c = (i >= pixelsize) ? previous_bytes[i - pixelsize] : 0
    p = a + b - c
    pa = (p - a).abs
    pb = (p - b).abs
    pc = (p - c).abs
    pr = (pa <= pb && pa <= pc) ? a : (pb <= pc ? b : c)
    encoded_bytes[i] = (original_bytes[i] - pr) % 256
  end
  [ChunkyPNG::FILTER_PAETH] + encoded_bytes
end