monster_id_jruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/README.mkd +15 -0
  4. data/Rakefile +1 -0
  5. data/examples/angry.png +0 -0
  6. data/examples/lovely_eyes.png +0 -0
  7. data/examples/pointy.png +0 -0
  8. data/examples/wink.png +0 -0
  9. data/lib/monster_id/monster.rb +66 -0
  10. data/lib/monster_id/parts/arms_1.png +0 -0
  11. data/lib/monster_id/parts/arms_2.png +0 -0
  12. data/lib/monster_id/parts/arms_3.png +0 -0
  13. data/lib/monster_id/parts/arms_4.png +0 -0
  14. data/lib/monster_id/parts/arms_5.png +0 -0
  15. data/lib/monster_id/parts/body_1.png +0 -0
  16. data/lib/monster_id/parts/body_10.png +0 -0
  17. data/lib/monster_id/parts/body_11.png +0 -0
  18. data/lib/monster_id/parts/body_12.png +0 -0
  19. data/lib/monster_id/parts/body_13.png +0 -0
  20. data/lib/monster_id/parts/body_14.png +0 -0
  21. data/lib/monster_id/parts/body_15.png +0 -0
  22. data/lib/monster_id/parts/body_2.png +0 -0
  23. data/lib/monster_id/parts/body_3.png +0 -0
  24. data/lib/monster_id/parts/body_4.png +0 -0
  25. data/lib/monster_id/parts/body_5.png +0 -0
  26. data/lib/monster_id/parts/body_6.png +0 -0
  27. data/lib/monster_id/parts/body_7.png +0 -0
  28. data/lib/monster_id/parts/body_8.png +0 -0
  29. data/lib/monster_id/parts/body_9.png +0 -0
  30. data/lib/monster_id/parts/eyes_1.png +0 -0
  31. data/lib/monster_id/parts/eyes_10.png +0 -0
  32. data/lib/monster_id/parts/eyes_11.png +0 -0
  33. data/lib/monster_id/parts/eyes_12.png +0 -0
  34. data/lib/monster_id/parts/eyes_13.png +0 -0
  35. data/lib/monster_id/parts/eyes_14.png +0 -0
  36. data/lib/monster_id/parts/eyes_15.png +0 -0
  37. data/lib/monster_id/parts/eyes_2.png +0 -0
  38. data/lib/monster_id/parts/eyes_3.png +0 -0
  39. data/lib/monster_id/parts/eyes_4.png +0 -0
  40. data/lib/monster_id/parts/eyes_5.png +0 -0
  41. data/lib/monster_id/parts/eyes_6.png +0 -0
  42. data/lib/monster_id/parts/eyes_7.png +0 -0
  43. data/lib/monster_id/parts/eyes_8.png +0 -0
  44. data/lib/monster_id/parts/eyes_9.png +0 -0
  45. data/lib/monster_id/parts/hair_1.png +0 -0
  46. data/lib/monster_id/parts/hair_2.png +0 -0
  47. data/lib/monster_id/parts/hair_3.png +0 -0
  48. data/lib/monster_id/parts/hair_4.png +0 -0
  49. data/lib/monster_id/parts/hair_5.png +0 -0
  50. data/lib/monster_id/parts/image.info +57 -0
  51. data/lib/monster_id/parts/legs_1.png +0 -0
  52. data/lib/monster_id/parts/legs_2.png +0 -0
  53. data/lib/monster_id/parts/legs_3.png +0 -0
  54. data/lib/monster_id/parts/legs_4.png +0 -0
  55. data/lib/monster_id/parts/legs_5.png +0 -0
  56. data/lib/monster_id/parts/mouth_1.png +0 -0
  57. data/lib/monster_id/parts/mouth_10.png +0 -0
  58. data/lib/monster_id/parts/mouth_2.png +0 -0
  59. data/lib/monster_id/parts/mouth_3.png +0 -0
  60. data/lib/monster_id/parts/mouth_4.png +0 -0
  61. data/lib/monster_id/parts/mouth_5.png +0 -0
  62. data/lib/monster_id/parts/mouth_6.png +0 -0
  63. data/lib/monster_id/parts/mouth_7.png +0 -0
  64. data/lib/monster_id/parts/mouth_8.png +0 -0
  65. data/lib/monster_id/parts/mouth_9.png +0 -0
  66. data/lib/monster_id/version.rb +3 -0
  67. data/lib/monster_id.rb +12 -0
  68. data/monster_id.gemspec +18 -0
  69. metadata +114 -0
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in monster_id.gemspec
4
+ gemspec
data/README.mkd ADDED
@@ -0,0 +1,15 @@
1
+ A Ruby port of [monsterid](http://www.splitbrain.org/projects/monsterid).
2
+
3
+ ## Usage
4
+
5
+ MonsterID.new('your_seed').save('monster.png')
6
+
7
+ MonsterID.new('a_seed').to_data_uri
8
+
9
+ MonsterID.new('your_seed').to_s # raw png
10
+
11
+ ![lovely eyes](/dira/monsterid/raw/master/examples/lovely_eyes.png) ![](/dira/monsterid/raw/master/examples/angry.png) ![](/dira/monsterid/raw/master/examples/pointy.png) ![;)](/dira/monsterid/raw/master/examples/wink.png)
12
+
13
+ ### License
14
+
15
+ License: [CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
Binary file
Binary file
Binary file
data/examples/wink.png ADDED
Binary file
@@ -0,0 +1,66 @@
1
+ require 'chunky_png'
2
+ require 'digest'
3
+ require 'base64'
4
+
5
+ module MonsterId
6
+
7
+ class Monster
8
+ SIZE = 120
9
+
10
+ def initialize(seed, size=nil)
11
+ srand Digest::MD5.hexdigest(seed.to_s).to_i(16)
12
+
13
+ # throw the dice for body parts
14
+ parts = {
15
+ legs: rand(5),
16
+ hair: rand(5),
17
+ arms: rand(5),
18
+ body: rand(15),
19
+ eyes: rand(15),
20
+ mouth: rand(10),
21
+ }
22
+
23
+ @image = ChunkyPNG::Image.new SIZE, SIZE, ChunkyPNG::Color::TRANSPARENT
24
+
25
+ parts.each do |name, number|
26
+ path = File.join File.dirname(__FILE__), 'parts', "#{name}_#{number + 1}.png"
27
+ part = ChunkyPNG::Image.from_file path
28
+
29
+ if name == :body
30
+ # random body color
31
+ w, h = part.width, part.height
32
+ r, g, b = rand(215) + 20, rand(215) + 20, rand(215) + 20
33
+ body_color = r * 256 * 256 * 256 + g * 256 * 256 + b * 256 + 255
34
+ part.pixels.each_with_index do |color, i|
35
+ unless color == 0 || color == 255
36
+ part[i % w, (i / w).to_i] = body_color
37
+ end
38
+ end
39
+ end
40
+
41
+ @image.compose!(part, 0, 0)
42
+ end
43
+
44
+ @image.resample_bilinear!(size, size) unless size == nil or size == SIZE
45
+
46
+ srand
47
+ end
48
+
49
+ def to_s
50
+ @image.to_datastream.to_s
51
+ end
52
+
53
+ def inspect
54
+ ''
55
+ end
56
+
57
+ def to_data_uri
58
+ 'data:image/png;base64,' + Base64.encode64(@image.to_s).gsub(/\n/, '')
59
+ end
60
+
61
+ def save(path)
62
+ @image.save(path)
63
+ end
64
+ end
65
+
66
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,57 @@
1
+ image 120x120 /var/www/splitbrain/_static/monsterid/parts/monsterparts.xcf
2
+ layer 120x120 0,0 Mouth_10.png
3
+ layer 120x120 0,0 Mouth_9.png
4
+ layer 120x120 0,0 Mouth_8.png
5
+ layer 120x120 0,0 Mouth_7.png
6
+ layer 120x120 0,0 Mouth_6.png
7
+ layer 120x120 0,0 Mouth_5.png
8
+ layer 120x120 0,0 Mouth_4.png
9
+ layer 120x120 0,0 Mouth_3.png
10
+ layer 120x120 0,0 Mouth_2.png
11
+ layer 120x120 0,0 Mouth_1.png
12
+ layer 120x120 0,0 Eyes_15.png
13
+ layer 120x120 0,0 Eyes_14.png
14
+ layer 120x120 0,0 Eyes_13.png
15
+ layer 120x120 0,0 Eyes_12.png
16
+ layer 120x120 0,0 Eyes_11.png
17
+ layer 120x120 0,0 Eyes_10.png
18
+ layer 120x120 0,0 Eyes_9.png
19
+ layer 120x120 0,0 Eyes_8.png
20
+ layer 120x120 0,0 Eyes_7.png
21
+ layer 120x120 0,0 Eyes_6.png
22
+ layer 120x120 0,0 Eyes_5.png
23
+ layer 120x120 0,0 Eyes_4.png
24
+ layer 120x120 0,0 Eyes_3.png
25
+ layer 120x120 0,0 Eyes_2.png
26
+ layer 120x120 0,0 Eyes_1.png
27
+ layer 120x120 0,0 Body_15.png
28
+ layer 120x120 0,0 Body_14.png
29
+ layer 120x120 0,0 Body_13.png
30
+ layer 120x120 0,0 Body_12.png
31
+ layer 120x120 0,0 Body_11.png
32
+ layer 120x120 0,0 Body_10.png
33
+ layer 120x120 0,0 Body_9.png
34
+ layer 120x120 0,0 Body_8.png
35
+ layer 120x120 0,0 Body_7.png
36
+ layer 120x120 0,0 Body_6.png
37
+ layer 120x120 0,0 Body_5.png
38
+ layer 120x120 0,0 Body_4.png
39
+ layer 120x120 0,0 Body_3.png
40
+ layer 120x120 0,0 Body_2.png
41
+ layer 120x120 0,0 Body_1.png
42
+ layer 120x120 0,0 Arms_5.png
43
+ layer 120x120 0,0 Arms_4.png
44
+ layer 120x120 0,0 Arms_3.png
45
+ layer 120x120 0,0 Arms_2.png
46
+ layer 120x120 0,0 Arms_1.png
47
+ layer 120x120 0,0 Hair_5.png
48
+ layer 120x120 0,0 Hair_4.png
49
+ layer 120x120 0,0 Hair_3.png
50
+ layer 120x120 0,0 Hair_2.png
51
+ layer 120x120 0,0 Hair_1.png
52
+ layer 120x120 0,0 Legs_5.png
53
+ layer 120x120 0,0 Legs_4.png
54
+ layer 120x120 0,0 Legs_3.png
55
+ layer 120x120 0,0 Legs_2.png
56
+ layer 120x120 0,0 Legs_1.png
57
+ layer 120x120 0,0 Background
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ module MonsterId
2
+ VERSION = "0.0.1"
3
+ end
data/lib/monster_id.rb ADDED
@@ -0,0 +1,12 @@
1
+ require "monster_id/version"
2
+ require "monster_id/monster"
3
+
4
+ ##
5
+ # A Ruby port of http://www.splitbrain.org/projects/monsterid
6
+ module MonsterId
7
+
8
+ def self.generate(seed, size=nil)
9
+ Monster.new(seed, size)
10
+ end
11
+
12
+ end
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "monster_id/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "monster_id_jruby"
7
+ s.version = MonsterId::VERSION
8
+ s.authors = ["Irina Dumitrascu"]
9
+ s.email = ["me@dira.ro"]
10
+ s.homepage = ""
11
+ s.summary = %q{Generate random monster images.}
12
+ s.description = %q{A Ruby port of the MonsterID PHP script, using ChunkyPNG (but not OilyPNG for JRuby compatability). http://www.splitbrain.org/projects/monsterid}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: monster_id_jruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Irina Dumitrascu
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-08 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A Ruby port of the MonsterID PHP script, using ChunkyPNG (but not OilyPNG
15
+ for JRuby compatability). http://www.splitbrain.org/projects/monsterid
16
+ email:
17
+ - me@dira.ro
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - .gitignore
23
+ - Gemfile
24
+ - README.mkd
25
+ - Rakefile
26
+ - examples/angry.png
27
+ - examples/lovely_eyes.png
28
+ - examples/pointy.png
29
+ - examples/wink.png
30
+ - lib/monster_id.rb
31
+ - lib/monster_id/monster.rb
32
+ - lib/monster_id/parts/arms_1.png
33
+ - lib/monster_id/parts/arms_2.png
34
+ - lib/monster_id/parts/arms_3.png
35
+ - lib/monster_id/parts/arms_4.png
36
+ - lib/monster_id/parts/arms_5.png
37
+ - lib/monster_id/parts/body_1.png
38
+ - lib/monster_id/parts/body_10.png
39
+ - lib/monster_id/parts/body_11.png
40
+ - lib/monster_id/parts/body_12.png
41
+ - lib/monster_id/parts/body_13.png
42
+ - lib/monster_id/parts/body_14.png
43
+ - lib/monster_id/parts/body_15.png
44
+ - lib/monster_id/parts/body_2.png
45
+ - lib/monster_id/parts/body_3.png
46
+ - lib/monster_id/parts/body_4.png
47
+ - lib/monster_id/parts/body_5.png
48
+ - lib/monster_id/parts/body_6.png
49
+ - lib/monster_id/parts/body_7.png
50
+ - lib/monster_id/parts/body_8.png
51
+ - lib/monster_id/parts/body_9.png
52
+ - lib/monster_id/parts/eyes_1.png
53
+ - lib/monster_id/parts/eyes_10.png
54
+ - lib/monster_id/parts/eyes_11.png
55
+ - lib/monster_id/parts/eyes_12.png
56
+ - lib/monster_id/parts/eyes_13.png
57
+ - lib/monster_id/parts/eyes_14.png
58
+ - lib/monster_id/parts/eyes_15.png
59
+ - lib/monster_id/parts/eyes_2.png
60
+ - lib/monster_id/parts/eyes_3.png
61
+ - lib/monster_id/parts/eyes_4.png
62
+ - lib/monster_id/parts/eyes_5.png
63
+ - lib/monster_id/parts/eyes_6.png
64
+ - lib/monster_id/parts/eyes_7.png
65
+ - lib/monster_id/parts/eyes_8.png
66
+ - lib/monster_id/parts/eyes_9.png
67
+ - lib/monster_id/parts/hair_1.png
68
+ - lib/monster_id/parts/hair_2.png
69
+ - lib/monster_id/parts/hair_3.png
70
+ - lib/monster_id/parts/hair_4.png
71
+ - lib/monster_id/parts/hair_5.png
72
+ - lib/monster_id/parts/image.info
73
+ - lib/monster_id/parts/legs_1.png
74
+ - lib/monster_id/parts/legs_2.png
75
+ - lib/monster_id/parts/legs_3.png
76
+ - lib/monster_id/parts/legs_4.png
77
+ - lib/monster_id/parts/legs_5.png
78
+ - lib/monster_id/parts/mouth_1.png
79
+ - lib/monster_id/parts/mouth_10.png
80
+ - lib/monster_id/parts/mouth_2.png
81
+ - lib/monster_id/parts/mouth_3.png
82
+ - lib/monster_id/parts/mouth_4.png
83
+ - lib/monster_id/parts/mouth_5.png
84
+ - lib/monster_id/parts/mouth_6.png
85
+ - lib/monster_id/parts/mouth_7.png
86
+ - lib/monster_id/parts/mouth_8.png
87
+ - lib/monster_id/parts/mouth_9.png
88
+ - lib/monster_id/version.rb
89
+ - monster_id.gemspec
90
+ homepage: ''
91
+ licenses: []
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ requirements: []
109
+ rubyforge_project:
110
+ rubygems_version: 1.8.24
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: Generate random monster images.
114
+ test_files: []