Initial catchat commit.
This commit is contained in:
commit
8b30fe923c
9 changed files with 460 additions and 0 deletions
128
pixel_image.rb
Normal file
128
pixel_image.rb
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
require "./pixel.rb"
|
||||
|
||||
class PixelImage
|
||||
@@magickImg = nil
|
||||
|
||||
@@pixels = []
|
||||
|
||||
def initialize(i)
|
||||
@@magickImg = i
|
||||
@@width = @@magickImg.columns
|
||||
@@height = @@magickImg.rows
|
||||
|
||||
self.buildPixels
|
||||
end
|
||||
|
||||
def buildPixels
|
||||
tmp_pixels = @@magickImg.get_pixels(0, 0, @@width, @@height)
|
||||
|
||||
for x in 0..@@width-1
|
||||
@@pixels[x] = []
|
||||
for y in 0..@@height-1
|
||||
@@pixels[x][y] = Pixel.new(tmp_pixels.pop)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Only used for generating truly random base images
|
||||
def randomPixels
|
||||
for x in 0..@@width-1
|
||||
@@pixels[x] = []
|
||||
for y in 0..@@height-1
|
||||
pixel = 0
|
||||
|
||||
r = rand(256)
|
||||
g = rand(256)
|
||||
b = rand(256)
|
||||
|
||||
pixel = (pixel << 8) | r
|
||||
pixel = (pixel << 8) | g
|
||||
pixel = (pixel << 8) | b
|
||||
@@pixels[x][y] = Pixel.new(pixel)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def saveImage
|
||||
puts "and the mult is..."
|
||||
|
||||
puts @@width * @@height
|
||||
|
||||
pixel_array = []
|
||||
|
||||
for x in @@pixels.reverse.each do
|
||||
for y in x.reverse.each do
|
||||
pix = y.getMagickPixel
|
||||
|
||||
pixel_array.append(pix.red)
|
||||
pixel_array.append(pix.green)
|
||||
pixel_array.append(pix.blue)
|
||||
end
|
||||
end
|
||||
|
||||
new_img = Magick::Image.new(@@width, @@height)
|
||||
|
||||
|
||||
new_img.import_pixels(0, 0, @@width, @@height, "RGB", pixel_array)
|
||||
|
||||
new_img.write("arty_new.png")
|
||||
end
|
||||
|
||||
def getPixels
|
||||
return @@pixels
|
||||
end
|
||||
|
||||
def getPixel(x, y)
|
||||
return @@pixels[x][y]
|
||||
end
|
||||
|
||||
def setPixelBits(x, y, bits)
|
||||
@@pixels[x][y] = Pixel.new(bits)
|
||||
end
|
||||
|
||||
def getSize
|
||||
return {"width": @@width, "height": @@height}
|
||||
end
|
||||
|
||||
def fuzzImage
|
||||
for x in 0..@@width-1 do
|
||||
for y in 0..@@height-1 do
|
||||
@@pixels[x][y].randomize
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def getSalt
|
||||
salt = 0
|
||||
|
||||
for x in 0..@@width-1
|
||||
for y in 0..@@height-1
|
||||
pix = @@pixels[x][y].getPixelBits
|
||||
|
||||
salt = salt << 6 | ((pix >> 2) & 0b111111)
|
||||
pix = pix >> 8
|
||||
salt = salt << 6 | ((pix >> 2) & 0b111111)
|
||||
pix = pix >> 8
|
||||
salt = salt << 6 | ((pix >> 2) & 0b111111)
|
||||
pix = pix >> 8
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
h = Digest::SHA512.hexdigest(salt.to_s(16))
|
||||
|
||||
return h
|
||||
end
|
||||
|
||||
def getBits(o)
|
||||
msg_bytes = o.unpack("c*")
|
||||
|
||||
msg_bits = 0
|
||||
|
||||
for b in msg_bytes
|
||||
msg_bits = (msg_bits << 8) | b
|
||||
end
|
||||
|
||||
return msg_bits
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue