mc_dot_art_maker 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/example/make_dot_art/make_dot_art.rb +2 -0
- data/example/make_dot_art/output/mosaic/test_image.png +0 -0
- data/example/make_dot_art/output/schematic/test_image.schematic +0 -0
- data/example/make_dot_art/output/texture/test_image.png +0 -0
- data/lib/mc_dot_art_maker.rb +2 -0
- data/lib/mc_dot_art_maker/block.rb +9 -21
- data/lib/mc_dot_art_maker/block_list.rb +8 -8
- data/lib/mc_dot_art_maker/cell.rb +7 -7
- data/lib/mc_dot_art_maker/constants.rb +14 -0
- data/lib/mc_dot_art_maker/extern_lib_extension.rb +52 -0
- data/lib/mc_dot_art_maker/schematic_helper.rb +0 -29
- data/lib/mc_dot_art_maker/table.rb +53 -40
- data/lib/mc_dot_art_maker/utils.rb +16 -5
- data/mc_dot_art_maker.gemspec +1 -1
- data/test/test_dither_method.rb +1 -1
- data/test/test_image_mosaic.png +0 -0
- data/test/test_image_texture.png +0 -0
- data/test/test_mosaic.rb +6 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ada9f71a0b53191792fa771b9ecb3439d8994a2
|
4
|
+
data.tar.gz: 0e1c14b21b56675f8e13cc47442aa2bc5975d217
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3557db8a6ffba7eda172948ca1f1931cd2862ca0d95c8a82d67aee59a2f8acf828f8d64f92b2689d6da809ede0723af938c934946cd8340c81a1dcf414f18ea
|
7
|
+
data.tar.gz: 6c4c01fd6277c184cedd8d8e38f6dc9f207662e1cf9a075eb9ba6a703dd5286a9571d7360adce6994f3fb8ed8c9bb4f1fb57c3d7678a1e0375bb4ed2bb75afee
|
data/README.md
CHANGED
@@ -3,6 +3,8 @@ require_relative '../../lib/mc_dot_art_maker'
|
|
3
3
|
Dir::entries("src").reject{|e| e[0]=='.'}.each do |entry|
|
4
4
|
table = MCDotArtMaker::Table.new("src/#{entry}")
|
5
5
|
base = entry.split('.').first
|
6
|
+
|
7
|
+
table.resize_to_fit(500,500)
|
6
8
|
table.texture_image.write "output/texture/#{base}.png"
|
7
9
|
table.mosaic_image.write "output/mosaic/#{base}.png"
|
8
10
|
table.write_schematic "output/schematic/#{base}.schematic"
|
Binary file
|
Binary file
|
Binary file
|
data/lib/mc_dot_art_maker.rb
CHANGED
@@ -4,6 +4,8 @@ require 'nbt_utils'
|
|
4
4
|
require 'color-rgb'
|
5
5
|
require 'rmagick'
|
6
6
|
|
7
|
+
require File.expand_path('../mc_dot_art_maker/constants.rb', __FILE__)
|
8
|
+
require File.expand_path('../mc_dot_art_maker/extern_lib_extension.rb', __FILE__)
|
7
9
|
require File.expand_path('../mc_dot_art_maker/block.rb', __FILE__)
|
8
10
|
require File.expand_path('../mc_dot_art_maker/block_list.rb', __FILE__)
|
9
11
|
require File.expand_path('../mc_dot_art_maker/cell.rb', __FILE__)
|
@@ -1,25 +1,6 @@
|
|
1
|
-
module Color
|
2
|
-
class RGB
|
3
|
-
def ==(other)
|
4
|
-
@r == other.r && @g == other.g && @b == other.b
|
5
|
-
end
|
6
|
-
def eql?(other)
|
7
|
-
@r.eql?(other.r) && @g.eql?(other.g) && @b.eql?(other.b)
|
8
|
-
end
|
9
|
-
def hash
|
10
|
-
code = 17
|
11
|
-
code = 37*code + @r.hash
|
12
|
-
code = 37*code + @g.hash
|
13
|
-
code = 37*code + @b.hash
|
14
|
-
code
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
1
|
module MCDotArtMaker
|
20
|
-
TEXTURE_SIZE = 16
|
21
2
|
class Block
|
22
|
-
attr_reader :name,:id,:data,:
|
3
|
+
attr_reader :name,:id,:data,:color
|
23
4
|
# - name - ブロック名 e.g. :orange_wool
|
24
5
|
# - id - id e.g. 35
|
25
6
|
# - data - data e.g. 1
|
@@ -32,12 +13,19 @@ module MCDotArtMaker
|
|
32
13
|
@color = Color::RGB.new(r, g, b)
|
33
14
|
@texture = tx.resize(TEXTURE_SIZE,TEXTURE_SIZE)
|
34
15
|
end
|
16
|
+
def texture(size=TEXTURE_SIZE)
|
17
|
+
if size != TEXTURE_SIZE
|
18
|
+
@texture.resize(size,size)
|
19
|
+
else
|
20
|
+
@texture
|
21
|
+
end
|
22
|
+
end
|
35
23
|
def to_lab
|
36
24
|
@color.to_lab
|
37
25
|
end
|
38
26
|
def to_rmagic_color
|
39
27
|
# p "calc color :#{@color.r} #{@color.g} #{@color.b}"
|
40
|
-
Magick::Pixel.new(@color.r*
|
28
|
+
Magick::Pixel.new(@color.r*257, @color.g*257, @color.b*257)
|
41
29
|
end
|
42
30
|
|
43
31
|
def hash
|
@@ -316,16 +316,16 @@ module MCDotArtMaker
|
|
316
316
|
#
|
317
317
|
# block :redstone_ore, '73', 'redstone_ore.png'
|
318
318
|
#
|
319
|
-
|
319
|
+
block :snow, '78', 'snow.png'
|
320
320
|
block :ice, '79', 'ice.png'
|
321
321
|
#
|
322
|
-
|
322
|
+
block :clay, '82', 'clay.png'
|
323
323
|
#
|
324
324
|
# block :jukebox, '84', 'jukebox_top.png'
|
325
325
|
#
|
326
326
|
# block :pumpkin, '86', 'pumpkin_top.png'
|
327
327
|
# block :netherrack, '87', 'netherrack.png'
|
328
|
-
|
328
|
+
block :soul_sand, '88', 'soul_sand.png'
|
329
329
|
block :glowstone, '89', 'glowstone.png'
|
330
330
|
#
|
331
331
|
# block :cake_block, '92', 'cake_top.png'
|
@@ -457,15 +457,15 @@ module MCDotArtMaker
|
|
457
457
|
|
458
458
|
private
|
459
459
|
def block(name, id_data_label, filename)
|
460
|
-
#
|
461
|
-
image = Magick::ImageList.new(File.expand_path("../textures/#{filename}", __FILE__))
|
462
|
-
r,g,b = MCDotArtMaker.calc_average_color(image
|
460
|
+
# Add blocks to @blocks
|
461
|
+
image = Magick::ImageList.new(File.expand_path("../textures/#{filename}", __FILE__)).first
|
462
|
+
r,g,b = MCDotArtMaker.calc_average_color(image)
|
463
463
|
id = id_data_label.split(':')[0].to_i
|
464
464
|
data = id_data_label.split(':')[1].to_i
|
465
465
|
|
466
|
-
block = Block.new(name,id, data,r,g,b, image
|
466
|
+
block = Block.new(name,id, data,r,g,b, image)
|
467
467
|
@blocks << block
|
468
|
-
puts "Block #{name} registered. R:#{r} G:#{g} B:#{b}"
|
468
|
+
MCDotArtMaker.puts "Block #{name} registered. R:#{r} G:#{g} B:#{b}"
|
469
469
|
end
|
470
470
|
end
|
471
471
|
end
|
@@ -5,21 +5,21 @@ module MCDotArtMaker
|
|
5
5
|
attr_accessor :block
|
6
6
|
def initialize(image,x,y)
|
7
7
|
pixel = image.pixel_color(x,y)
|
8
|
-
r = pixel.red /
|
9
|
-
g = pixel.green /
|
10
|
-
b = pixel.blue /
|
8
|
+
r = pixel.red / 257
|
9
|
+
g = pixel.green / 257
|
10
|
+
b = pixel.blue / 257
|
11
11
|
@color = Color::RGB.new(r, g, b)
|
12
12
|
end
|
13
13
|
# def set_color(r,g,b)
|
14
14
|
# @color = Color::RGB.new(r, g, b)
|
15
15
|
# # p "set color #{r} #{g} #{b}"
|
16
16
|
# end
|
17
|
-
def to_lab
|
18
|
-
|
19
|
-
end
|
17
|
+
# def to_lab
|
18
|
+
# @color.to_lab
|
19
|
+
# end
|
20
20
|
def to_rmagic_color
|
21
21
|
# p "calc color :#{@color.r} #{@color.g} #{@color.b}"
|
22
|
-
Magick::Pixel.new(@color.r*
|
22
|
+
Magick::Pixel.new(@color.r*257, @color.g*257, @color.b*257)
|
23
23
|
end
|
24
24
|
def comparitor
|
25
25
|
Color::Comparison.new(@color)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#
|
2
|
+
# Constants used in this gem
|
3
|
+
#
|
4
|
+
|
5
|
+
module MCDotArtMaker
|
6
|
+
DEFAULT_DOT_SIZE = 5
|
7
|
+
TEXTURE_SIZE = 16
|
8
|
+
|
9
|
+
DEBUG = false
|
10
|
+
|
11
|
+
NoDitherMethod = Magick::NoDitherMethod
|
12
|
+
RiemersmaDitherMethod = Magick::RiemersmaDitherMethod
|
13
|
+
FloydSteinbergDitherMethod = Magick::FloydSteinbergDitherMethod
|
14
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#
|
2
|
+
# Add some features to extern gem.
|
3
|
+
#
|
4
|
+
|
5
|
+
module Color
|
6
|
+
class RGB
|
7
|
+
# Add to check equality
|
8
|
+
def ==(other)
|
9
|
+
@r == other.r && @g == other.g && @b == other.b
|
10
|
+
end
|
11
|
+
# Add to use this object for hash key
|
12
|
+
def eql?(other)
|
13
|
+
@r.eql?(other.r) && @g.eql?(other.g) && @b.eql?(other.b)
|
14
|
+
end
|
15
|
+
def hash
|
16
|
+
code = 17
|
17
|
+
code = 37*code + @r.hash
|
18
|
+
code = 37*code + @g.hash
|
19
|
+
code = 37*code + @b.hash
|
20
|
+
code
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Add to rewrite NBT files
|
26
|
+
module NBTUtils
|
27
|
+
module Tag
|
28
|
+
class ByteArray
|
29
|
+
def payload=(new_value)
|
30
|
+
@payload = ::BinData::String.new(new_value)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
module NBTUtils
|
36
|
+
module Tag
|
37
|
+
class Int
|
38
|
+
def payload=(new_value)
|
39
|
+
@payload = ::BinData::Int32be.new(new_value)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
module NBTUtils
|
45
|
+
module Tag
|
46
|
+
class Short
|
47
|
+
def payload=(new_value)
|
48
|
+
@payload = ::BinData::Int16be.new(new_value)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,32 +1,3 @@
|
|
1
|
-
# NBTUtilsを開いてデータ書き換えのためのメソッドを定義する
|
2
|
-
module NBTUtils
|
3
|
-
module Tag
|
4
|
-
class ByteArray
|
5
|
-
def payload=(new_value)
|
6
|
-
@payload = ::BinData::String.new(new_value)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
module NBTUtils
|
12
|
-
module Tag
|
13
|
-
class Int
|
14
|
-
def payload=(new_value)
|
15
|
-
@payload = ::BinData::Int32be.new(new_value)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
module NBTUtils
|
21
|
-
module Tag
|
22
|
-
class Short
|
23
|
-
def payload=(new_value)
|
24
|
-
@payload = ::BinData::Int16be.new(new_value)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
1
|
module MCDotArtMaker
|
31
2
|
class IllegalBlockSizeError < StandardError ; end
|
32
3
|
|
@@ -1,53 +1,36 @@
|
|
1
1
|
module MCDotArtMaker
|
2
|
-
DEFAULT_DOT_SIZE = 5
|
3
2
|
#= ドット絵を表すクラス。Cellの集合体
|
4
3
|
class Table
|
5
4
|
attr_reader :width, :height, :cells
|
6
|
-
include Enumerable
|
5
|
+
# include Enumerable
|
7
6
|
|
8
|
-
def initialize(filename,dither_method =
|
7
|
+
def initialize(filename,dither_method = RiemersmaDitherMethod)
|
9
8
|
# モザイクにしたい元画像をセット
|
10
|
-
|
11
9
|
if filename.instance_of? String
|
12
10
|
@image = Magick::ImageList.new(filename).first
|
13
11
|
elsif filename.instance_of? Magick::Image
|
14
12
|
@image = filename
|
15
13
|
end
|
16
|
-
|
17
|
-
|
18
|
-
# - width - 絵の横方向の大きさ
|
19
|
-
# - height - 絵の縦方向の大きさ
|
20
|
-
# 端っこは切り捨てる
|
21
|
-
@width = @image.columns
|
22
|
-
@height = @image.rows
|
23
|
-
@cells = []
|
24
|
-
@block_list = MCDotArtMaker::BlockList.instance
|
25
|
-
|
26
|
-
puts "remapping..."
|
27
|
-
@image = @image.remap(@block_list.to_remap_image,dither_method)
|
28
|
-
puts "Done!"
|
29
|
-
|
30
|
-
puts "Registering cells..."
|
31
|
-
(@width*@height).times do |i|
|
32
|
-
x = i % @width #列番号・横方向: x
|
33
|
-
y = i / @width #行番号・縦方向: y
|
34
|
-
@cells << Cell.new(@image,x,y)
|
35
|
-
end
|
36
|
-
puts "Done!"
|
37
|
-
|
14
|
+
@dither_method = dither_method
|
38
15
|
|
39
16
|
@schematic_helper = MCDotArtMaker::SchematicHelper.instance
|
40
17
|
@schematic_helper.read File.expand_path('../seed.schematic', __FILE__)
|
41
18
|
|
42
19
|
@calculation_count = 0 # 近似ブロック計算が終わったらインクリメント
|
43
20
|
end
|
21
|
+
def resize_to_fit(width, height)
|
22
|
+
@image = @image.resize_to_fit(width, height)
|
23
|
+
end
|
44
24
|
def [](row,col)
|
25
|
+
load_image unless image_loaded?
|
45
26
|
@cells[row*@width + col]
|
46
27
|
end
|
47
28
|
def []=(row,col,newValue)
|
29
|
+
load_image unless image_loaded?
|
48
30
|
@cells[row*@width + col] = newValue
|
49
31
|
end
|
50
32
|
def each(size = 1)
|
33
|
+
load_image unless image_loaded?
|
51
34
|
@cells.each_with_index do |c,i|
|
52
35
|
x = (i % @width) * size #列番号・横方向: x
|
53
36
|
y = (i/@width) * size #行番号・縦方向: y
|
@@ -56,6 +39,7 @@ module MCDotArtMaker
|
|
56
39
|
end
|
57
40
|
end
|
58
41
|
def each_with_index(size = 1)
|
42
|
+
load_image unless image_loaded?
|
59
43
|
@cells.each_with_index do |c,i|
|
60
44
|
x = (i % @width) * size #列番号・横方向: x
|
61
45
|
y = (i/@width) * size #行番号・縦方向: y
|
@@ -64,6 +48,7 @@ module MCDotArtMaker
|
|
64
48
|
end
|
65
49
|
end
|
66
50
|
def block_ids
|
51
|
+
load_image unless image_loaded?
|
67
52
|
tmp = []
|
68
53
|
each do |c|
|
69
54
|
tmp << c.block.id
|
@@ -71,42 +56,44 @@ module MCDotArtMaker
|
|
71
56
|
tmp
|
72
57
|
end
|
73
58
|
def block_data
|
59
|
+
load_image unless image_loaded?
|
74
60
|
tmp = []
|
75
61
|
each do |c|
|
76
62
|
tmp << c.block.data
|
77
63
|
end
|
78
64
|
tmp
|
79
65
|
end
|
80
|
-
def mosaic_image
|
66
|
+
def mosaic_image(size = 1)
|
81
67
|
# モザイク化した画像を返す
|
82
68
|
calculate
|
83
69
|
|
84
|
-
new_image = Magick::Image.new(@width*
|
85
|
-
each(
|
70
|
+
new_image = Magick::Image.new(@width*size, @height*size){ self.background_color = "white" }
|
71
|
+
each(size) do |c,x,y|
|
86
72
|
idr = Magick::Draw.new
|
87
73
|
idr.fill = c.block.to_rmagic_color
|
88
|
-
idr.rectangle(x, y, x +
|
74
|
+
idr.rectangle(x, y, x + size, y + size)
|
89
75
|
idr.draw(new_image)
|
90
76
|
end
|
91
77
|
new_image
|
92
78
|
end
|
93
79
|
def calculate
|
80
|
+
load_image unless image_loaded?
|
94
81
|
calc_nearest_block unless calculation_done?
|
95
82
|
end
|
96
83
|
|
97
|
-
def texture_image
|
84
|
+
def texture_image(size = TEXTURE_SIZE)
|
98
85
|
# 近似ブロック色でのモザイク画像を返す
|
99
86
|
calculate
|
100
87
|
|
101
|
-
new_image = Magick::Image.new(@width*
|
102
|
-
each(
|
103
|
-
new_image.composite!(c.block.texture, x, y, Magick::OverCompositeOp)
|
88
|
+
new_image = Magick::Image.new(@width*size, @height*size){ self.background_color = "white" }
|
89
|
+
each(size) do |c,x,y|
|
90
|
+
new_image.composite!(c.block.texture(size), x, y, Magick::OverCompositeOp)
|
104
91
|
end
|
105
92
|
new_image
|
106
93
|
end
|
107
94
|
|
108
95
|
def write_schematic(filename)
|
109
|
-
|
96
|
+
calculate
|
110
97
|
|
111
98
|
@schematic_helper.blocks = block_ids
|
112
99
|
@schematic_helper.data = block_data
|
@@ -121,14 +108,16 @@ module MCDotArtMaker
|
|
121
108
|
@schematic_helper.length = @height
|
122
109
|
@schematic_helper.write filename
|
123
110
|
end
|
124
|
-
|
111
|
+
def image_loaded?
|
112
|
+
!@cells.nil?
|
113
|
+
end
|
125
114
|
private
|
126
115
|
def calc_nearest_block
|
127
|
-
puts "Calc nearest block...."
|
116
|
+
MCDotArtMaker.puts "Calc nearest block...."
|
128
117
|
@nearest_color_cash ||= {}
|
129
118
|
|
130
119
|
each_with_index do |cell,index|
|
131
|
-
puts "Calculating #{index+1} of #{@cells.size}" if (index % 10000 == 0)|| (index == @cells.size)
|
120
|
+
puts "Calculating #{index+1} of #{@cells.size}" if ((index+1) % 10000 == 0)|| (index+1 == @cells.size)
|
132
121
|
if @nearest_color_cash.include?(cell.color)
|
133
122
|
cell.block = @nearest_color_cash[cell.color]
|
134
123
|
else
|
@@ -141,14 +130,38 @@ module MCDotArtMaker
|
|
141
130
|
@nearest_color_cash[cell.color] = nearest_block
|
142
131
|
cell.block = nearest_block
|
143
132
|
|
144
|
-
puts "Cashed new color #{@nearest_color_cash.size} of #{@block_list.size}"
|
133
|
+
MCDotArtMaker.puts "Cashed new color #{@nearest_color_cash.size} of #{@block_list.size}"
|
145
134
|
end
|
146
135
|
@calculation_count += 1
|
147
136
|
end
|
148
|
-
puts "Done!"
|
137
|
+
MCDotArtMaker.puts "Done!"
|
149
138
|
end
|
150
139
|
def calculation_done?
|
151
140
|
@cells.size == @calculation_count
|
152
141
|
end
|
142
|
+
def load_image
|
143
|
+
# - width - 絵の横方向の大きさ
|
144
|
+
# - height - 絵の縦方向の大きさ
|
145
|
+
# 端っこは切り捨てる
|
146
|
+
@width = @image.columns
|
147
|
+
@height = @image.rows
|
148
|
+
@cells = []
|
149
|
+
@block_list = MCDotArtMaker::BlockList.instance
|
150
|
+
|
151
|
+
MCDotArtMaker.puts "remapping..."
|
152
|
+
@image = @image.remap(@block_list.to_remap_image,@dither_method)
|
153
|
+
MCDotArtMaker.puts "Done!"
|
154
|
+
|
155
|
+
MCDotArtMaker.puts "Registering cells..."
|
156
|
+
(@width*@height).times do |i|
|
157
|
+
x = i % @width #列番号・横方向: x
|
158
|
+
y = i / @width #行番号・縦方向: y
|
159
|
+
@cells << Cell.new(@image,x,y)
|
160
|
+
end
|
161
|
+
MCDotArtMaker.puts "Done!"
|
162
|
+
|
163
|
+
@calculation_count = 0
|
164
|
+
end
|
165
|
+
|
153
166
|
end
|
154
167
|
end
|
@@ -1,23 +1,34 @@
|
|
1
1
|
module MCDotArtMaker
|
2
|
-
def self.calc_average_color(
|
2
|
+
def self.calc_average_color(arg)
|
3
|
+
pixels = nil
|
4
|
+
if arg.instance_of? Magick::Image or arg.instance_of? Magick::ImageList
|
5
|
+
pixels = arg.get_pixels(0,0,arg.columns,arg.rows)
|
6
|
+
elsif arg.instance_of? Array
|
7
|
+
pixels = arg
|
8
|
+
end
|
9
|
+
|
3
10
|
if pixels.size == 1
|
4
|
-
return pixels[0].red/
|
11
|
+
return pixels[0].red/257, pixels[0].green/257, pixels[0].blue/257
|
5
12
|
end
|
6
13
|
sum_r = pixels.reduce(0) do |a,elem|
|
7
|
-
a+elem.red/
|
14
|
+
a+elem.red/257
|
8
15
|
end
|
9
16
|
ave_r = sum_r/pixels.size
|
10
17
|
|
11
18
|
sum_g = pixels.reduce(0) do |a,elem|
|
12
|
-
a+elem.green/
|
19
|
+
a+elem.green/257
|
13
20
|
end
|
14
21
|
ave_g = sum_g/pixels.size
|
15
22
|
|
16
23
|
sum_b = pixels.reduce(0) do |a,elem|
|
17
|
-
a+elem.blue/
|
24
|
+
a+elem.blue/257
|
18
25
|
end
|
19
26
|
ave_b = sum_b/pixels.size
|
20
27
|
|
21
28
|
[ave_r, ave_g, ave_b]
|
22
29
|
end
|
30
|
+
|
31
|
+
def self.puts(*args)
|
32
|
+
Kernel.puts *args if DEBUG
|
33
|
+
end
|
23
34
|
end
|
data/mc_dot_art_maker.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'mc_dot_art_maker'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.2.0'
|
4
4
|
s.licenses = ['MIT']
|
5
5
|
s.summary = 'Dot Art Maker for Minecraft'
|
6
6
|
s.description = 'Converting images to mosaic arts using Minecraft textures and .schematic files.'
|
data/test/test_dither_method.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../lib/mc_dot_art_maker'
|
2
2
|
|
3
3
|
|
4
|
-
methods = [
|
4
|
+
methods = [MCDotArtMaker::NoDitherMethod,MCDotArtMaker::RiemersmaDitherMethod,MCDotArtMaker::FloydSteinbergDitherMethod]
|
5
5
|
|
6
6
|
methods.each do |m|
|
7
7
|
fn = Magick::ImageList.new("test_image.jpg").first
|
Binary file
|
Binary file
|
data/test/test_mosaic.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mc_dot_art_maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kumassy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|
@@ -130,6 +130,8 @@ files:
|
|
130
130
|
- lib/mc_dot_art_maker/block.rb
|
131
131
|
- lib/mc_dot_art_maker/block_list.rb
|
132
132
|
- lib/mc_dot_art_maker/cell.rb
|
133
|
+
- lib/mc_dot_art_maker/constants.rb
|
134
|
+
- lib/mc_dot_art_maker/extern_lib_extension.rb
|
133
135
|
- lib/mc_dot_art_maker/schematic_helper.rb
|
134
136
|
- lib/mc_dot_art_maker/seed.schematic
|
135
137
|
- lib/mc_dot_art_maker/table.rb
|
@@ -524,6 +526,9 @@ files:
|
|
524
526
|
- test/test_image_FloydSteinbergDitherMethod.png
|
525
527
|
- test/test_image_NoDitherMethod.png
|
526
528
|
- test/test_image_RiemersmaDitherMethod.png
|
529
|
+
- test/test_image_mosaic.png
|
530
|
+
- test/test_image_texture.png
|
531
|
+
- test/test_mosaic.rb
|
527
532
|
homepage: https://github.com/Kumassy/MCDotArtMaker
|
528
533
|
licenses:
|
529
534
|
- MIT
|