Skip to content

Instantly share code, notes, and snippets.

@ianterrell
Forked from jeffkreeftmeijer/output.png
Created June 27, 2011 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ianterrell/773a54c35f957b90194c to your computer and use it in GitHub Desktop.
Save ianterrell/773a54c35f957b90194c to your computer and use it in GitHub Desktop.
Codebrawl #2 example Gist
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(reds),average(greens),average(blues),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('average.png')
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(blues),average(greens),average(reds),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('bgr.png')
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(blues),average(reds),average(greens),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('brg.png')
require 'chunky_png'
pixel_size = 10
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(reds.min,greens.min,blues.min,255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('darkest.png')
require 'chunky_png'
pixel_size = 10
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = image[i*pixel_size,j*pixel_size]
rescue
end
end
end
end
end
image.save('first.png')
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(greens),average(blues),average(reds),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('gbr.png')
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(greens),average(reds),average(blues),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('grb.png')
require 'chunky_png'
pixel_size = 10
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(reds.max,greens.max,blues.max,255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('lightest.png')
require 'chunky_png'
pixel_size = 10
def random(array)
array[rand(array.size)]
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(random(reds),random(greens),random(blues),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('random-component.png')
require 'chunky_png'
pixel_size = 10
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
color = image[[(i*pixel_size+rand(pixel_size)),image.width-1].min,[(j*pixel_size+rand(pixel_size)),image.height-1].min]
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('random-pixel.png')
require 'chunky_png'
pixel_size = 10
def average(array)
array.inject(0) { |sum, el| sum + el } / array.size
end
image = ChunkyPNG::Image.from_file('input.png')
(image.width.to_f/pixel_size).round.times do |i|
(image.height.to_f/pixel_size).round.times do |j|
reds = []
greens = []
blues = []
pixel_size.times do |k|
pixel_size.times do |l|
begin
reds << ChunkyPNG::Color.r(image[i*pixel_size+k,j*pixel_size+l])
greens << ChunkyPNG::Color.g(image[i*pixel_size+k,j*pixel_size+l])
blues << ChunkyPNG::Color.b(image[i*pixel_size+k,j*pixel_size+l])
rescue
end
end
end
color = ChunkyPNG::Color.rgba(average(reds),average(blues),average(greens),255)
pixel_size.times do |k|
pixel_size.times do |l|
begin
image[i*pixel_size+k,j*pixel_size+l] = color
rescue
end
end
end
end
end
image.save('rbg.png')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment