Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,44 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative 'raster_graphics'
|
||||
|
||||
class Pixmap
|
||||
def self.read_ppm(ios)
|
||||
format = ios.gets.chomp
|
||||
width, height = ios.gets.chomp.split.map(&:to_i)
|
||||
max_colour = ios.gets.chomp
|
||||
|
||||
if !PIXMAP_FORMATS.include?(format) ||
|
||||
(width < 1) || (height < 1) ||
|
||||
(max_colour != '255')
|
||||
ios.close
|
||||
raise StandardError, "file '#{filename}' does not start with the expected header"
|
||||
end
|
||||
ios.binmode if PIXMAP_BINARY_FORMATS.include?(format)
|
||||
|
||||
bitmap = new(width, height)
|
||||
height.times do |y|
|
||||
width.times do |x|
|
||||
# read 3 bytes
|
||||
red, green, blue = case format
|
||||
when 'P3' then ios.gets.chomp.split
|
||||
when 'P6' then ios.read(3).unpack('C3')
|
||||
end
|
||||
bitmap[x, y] = RGBColour.new(red, green, blue)
|
||||
end
|
||||
end
|
||||
ios.close
|
||||
bitmap
|
||||
end
|
||||
|
||||
def self.open(filename)
|
||||
read_ppm(File.open(filename, 'r'))
|
||||
end
|
||||
|
||||
def self.open_from_jpeg(filename)
|
||||
read_ppm(IO.popen("convert jpg:#{filename} ppm:-", 'r'))
|
||||
end
|
||||
end
|
||||
|
||||
bitmap = Pixmap.open_from_jpeg('foto.jpg')
|
||||
bitmap.save('foto.ppm')
|
||||
Loading…
Add table
Add a link
Reference in a new issue