24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/cryptopunks.rb', line 24
def run( args )
opts = { zoom: 1,
outdir: '.',
file: './punks.png',
}
parser = OptionParser.new do |cmd|
cmd.banner = "Usage: punk (or cryptopunk) [options] IDs"
cmd.separator " Mint punk characters from composite (#{opts[:file]}) - for IDs use 0 to 9999"
cmd.separator ""
cmd.separator " Options:"
cmd.on("-z", "--zoom=ZOOM", "Zoom factor x2, x4, x8, etc. (default: #{opts[:zoom]})", Integer ) do |zoom|
opts[:zoom] = zoom
end
cmd.on("-d", "--dir=DIR", "Output directory (default: #{opts[:outdir]})", String ) do |outdir|
opts[:outdir] = outdir
end
cmd.on("-f", "--file=FILE", "True Official Genuine CryptoPunks™ composite image (default: #{opts[:file]})", String ) do |file|
opts[:file] = file
end
cmd.on("-h", "--help", "Prints this help") do
puts cmd
exit
end
end
parser.parse!( args )
puts "opts:"
pp opts
puts "==> reading >#{opts[:file]}<..."
punks = Image.read( opts[:file] )
puts " setting zoom to #{opts[:zoom]}x" if opts[:zoom] != 1
punks.zoom = opts[:zoom]
FileUtils.mkdir_p( opts[:outdir] ) unless Dir.exist?( opts[:outdir] )
args.each_with_index do |arg,index|
punk_index = arg.to_i
punk_name = "punk-" + "%04d" % punk_index
punk_name << "x#{opts[:zoom]}" if opts[:zoom] != 1
path = "#{opts[:outdir]}/#{punk_name}.png"
puts "==> (#{index+1}/#{args.size}) minting punk ##{punk_index}; writing to >#{path}<..."
punks[ punk_index ].save( path )
end
puts "done"
end
|