identiconify 0.0.1 → 0.0.2
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 +14 -4
- data/lib/identiconify/version.rb +1 -1
- data/lib/identiconify.rb +12 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 437de306876ca2063bb4da1d21c071a22fc2ab6f
|
4
|
+
data.tar.gz: 10db2215c471afbef61efb9cec4c1260fb04dc5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36d54596ba82a24cd92ef29a75fa4c1ffa856f30331a42ad93e9162c4324240a3e23df780543bcb8898fd1a358564f62b2bb63cf2f7b0f4c6a5ae580f913c2da
|
7
|
+
data.tar.gz: 1edda89f727358415794d332c20b5f9b35cf8d212c4a5aa00eea2165638ea0b1450f2360c2b4a425b519640c5d85358f24b82a9feccc6f06dae2a25efcbaf57f
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ values such as usernames or ip addresses.
|
|
7
7
|
|
8
8
|
Add this line to your application's Gemfile:
|
9
9
|
|
10
|
-
gem
|
10
|
+
gem "identiconify"
|
11
11
|
|
12
12
|
And then execute:
|
13
13
|
|
@@ -22,7 +22,7 @@ Or install it yourself as:
|
|
22
22
|
Require the Identiconify
|
23
23
|
|
24
24
|
```ruby
|
25
|
-
require
|
25
|
+
require "identiconify"
|
26
26
|
```
|
27
27
|
|
28
28
|
Now you have access to the Identiconify::Identicon class which can be use as
|
@@ -32,13 +32,23 @@ such:
|
|
32
32
|
string = "this is my string"
|
33
33
|
identicon = Identiconify::Identicon.new(string)
|
34
34
|
png_data = identicon.to_png_blob
|
35
|
+
```
|
36
|
+
|
37
|
+
The png data can then be written to disk or be sent over an http connection.
|
35
38
|
|
36
|
-
|
37
|
-
File.open(
|
39
|
+
```ruby
|
40
|
+
File.open("image.png", "w") do |file|
|
38
41
|
file.write(png_data)
|
39
42
|
end
|
40
43
|
```
|
41
44
|
|
45
|
+
To specify the desired size of the identicon (in pixels), pass the widht option
|
46
|
+
to the constructor.
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
identicon = Identiconify::Identicon.new(string, width: 512)
|
50
|
+
```
|
51
|
+
|
42
52
|
## Contributing
|
43
53
|
|
44
54
|
1. Fork it
|
data/lib/identiconify/version.rb
CHANGED
data/lib/identiconify.rb
CHANGED
@@ -6,22 +6,23 @@ module Identiconify
|
|
6
6
|
class Identicon
|
7
7
|
HASH_KEY = "61616f73646a6173646a616f7369646a"
|
8
8
|
|
9
|
-
attr_reader :string, :square_size, :row_count
|
9
|
+
attr_reader :string, :square_size, :row_count, :width, :inverse_offset
|
10
10
|
|
11
|
-
def initialize(string)
|
11
|
+
def initialize(string, options={})
|
12
12
|
@string = string
|
13
|
-
@
|
13
|
+
@width = options.fetch(:width) { 250 }
|
14
14
|
@row_count = 5
|
15
|
+
@square_size = @width / @row_count
|
16
|
+
# Since we can't draw subpixels we need to calculate how much we have to
|
17
|
+
# offset the inverted version of the identicon to not create gaps or
|
18
|
+
# overlaps in the middle of the image.
|
19
|
+
@inverse_offset = @width - @square_size * @row_count
|
15
20
|
end
|
16
21
|
|
17
22
|
def column_count
|
18
23
|
row_count.even? ? row_count/2 : row_count/2+1
|
19
24
|
end
|
20
25
|
|
21
|
-
def width
|
22
|
-
square_size * row_count
|
23
|
-
end
|
24
|
-
|
25
26
|
def to_png_blob
|
26
27
|
hash = SipHash.digest(HASH_KEY, string)
|
27
28
|
|
@@ -37,8 +38,8 @@ module Identiconify
|
|
37
38
|
hash >>= 24
|
38
39
|
|
39
40
|
png = ChunkyPNG::Image.new(width, width, bg_color)
|
40
|
-
0.upto(row_count).each do |row|
|
41
|
-
0.upto(column_count).each do |column|
|
41
|
+
0.upto(row_count-1).each do |row|
|
42
|
+
0.upto(column_count-1).each do |column|
|
42
43
|
if hash & 1 == 1
|
43
44
|
x0 = column*square_size
|
44
45
|
y0 = row*square_size
|
@@ -47,8 +48,8 @@ module Identiconify
|
|
47
48
|
png.rect(x0, y0, x1, y1, color, color)
|
48
49
|
|
49
50
|
# Inverse the x coordinates making the image mirrored vertically
|
50
|
-
x0 = width-(column+1)*square_size
|
51
|
-
x1 = width-column*square_size-1
|
51
|
+
x0 = width-(column+1)*square_size-inverse_offset
|
52
|
+
x1 = width-column*square_size-inverse_offset-1
|
52
53
|
png.rect(x0, y0, x1, y1, color, color)
|
53
54
|
end
|
54
55
|
hash >>= 1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: identiconify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- calleerlandsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|