pxlsrt 1.2.0 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 230df80c367a553e25218d63f36b19b95643ca38
4
- data.tar.gz: 02829c2d157cbab4b1411fa869f7ce332f210506
3
+ metadata.gz: 261def653de6b5100adf27ef5e0322d097d16563
4
+ data.tar.gz: 2e5e58532b22930c4b91d00b4beb62eca0b2077c
5
5
  SHA512:
6
- metadata.gz: ad3a94f33d897a9dfee3f8c366af715f0d6349611d787d6c44baa1235eeef1ccc0bf43ad914d2598d337262f8795a59dba4a9c20350e91794007b96fd8c656dc
7
- data.tar.gz: 75dbb6d353eae5d195683c9a5dd136542ad86cccca68ccba32c53813955ae341107b79115d2faf4b6cbc8f2f9c64d52ce380e4d18b70a8b6b4f129996a6b6efe
6
+ metadata.gz: 320adc9d126207b337658fdaa7797a54de176db706232ddf30988ff4033dcd3e5cf51765a3f97130e0d49088187a8e15a41aae836ec402c42f919fe30d7b43a6
7
+ data.tar.gz: b0d6a304921ea9dabbc4ac2d9147a54d81667767f70922b0d673902c9f073b9769bee49d398b4cffe970275149d3b317afeb08d997963917886802577fa223fe
data/bin/pxlsrt CHANGED
@@ -18,7 +18,7 @@ class CLI < Thor
18
18
  class_option :vertical, :type => :boolean, :default => false, :aliases => "-v"
19
19
  class_option :diagonal, :type => :boolean, :default => false, :aliases => "-d"
20
20
  class_option :smooth, :type => :boolean, :default => false, :aliases => "-s"
21
- class_option :method, :type => :string, :default => "sum-rgb", :banner => "[sum-rgb | red | green | blue | sum-hsb | hue | saturation | brightness | uniqueness | luma | random]", :aliases => "-m", :enum => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random"]
21
+ class_option :method, :type => :string, :default => "sum-rgb", :banner => "[sum-rgb | red | green | blue | sum-hsb | hue | saturation | brightness | uniqueness | luma | random | cyan | magenta | yellow | alpha | sum-rgba | sum-hsba]", :aliases => "-m", :enum => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random", "cyan", "magenta", "yellow", "alpha", "sum-rgba", "sum-hsba"]
22
22
  class_option :verbose, :type => :boolean, :default => false, :aliases => "-V"
23
23
 
24
24
  option :min, :type => :numeric, :default => Float::INFINITY, :banner => "MINIMUM BANDWIDTH"
data/lib/pxlsrt/brute.rb CHANGED
@@ -34,7 +34,7 @@ module Pxlsrt
34
34
  :vertical => [false, true],
35
35
  :diagonal => [false, true],
36
36
  :smooth => [false, true],
37
- :method => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random"],
37
+ :method => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random", "cyan", "magenta", "yellow", "alpha", "sum-rgba", "sum-hsba"],
38
38
  :verbose => [false, true],
39
39
  :min => [Float::INFINITY, {:class => [Fixnum]}],
40
40
  :max => [Float::INFINITY, {:class => [Fixnum]}],
@@ -76,7 +76,7 @@ module Pxlsrt
76
76
  Pxlsrt::Helpers.verbose("Retrieving RGB values of pixels...") if options[:verbose]
77
77
  kml=[]
78
78
  for xy in 0..(w*h-1)
79
- kml.push(Pxlsrt::Colors.getRGB(png[xy % w,(xy/w).floor]))
79
+ kml.push(Pxlsrt::Colors.getRGBA(png[xy % w,(xy/w).floor]))
80
80
  end
81
81
  if options[:vertical]==true
82
82
  Pxlsrt::Helpers.verbose("Rotating image for vertical mode...") if options[:verbose]
@@ -134,7 +134,7 @@ module Pxlsrt
134
134
  end
135
135
  Pxlsrt::Helpers.verbose("Giving pixels new RGB values...") if options[:verbose]
136
136
  for xy in 0..(w*h-1)
137
- sorted[xy % w, (xy/w).floor]=Pxlsrt::Colors.arrayToRGB(toImage[xy])
137
+ sorted[xy % w, (xy/w).floor]=Pxlsrt::Colors.arrayToRGBA(toImage[xy])
138
138
  end
139
139
  endTime=Time.now
140
140
  timeElapsed=endTime-startTime
data/lib/pxlsrt/colors.rb CHANGED
@@ -5,9 +5,9 @@ module Pxlsrt
5
5
  # Includes color and image operations.
6
6
  class Colors
7
7
  ##
8
- # Converts a ChunkyPNG pixel into an array of the reg, green, and blue values
9
- def self.getRGB(pxl)
10
- return [ChunkyPNG::Color.r(pxl), ChunkyPNG::Color.g(pxl), ChunkyPNG::Color.b(pxl)]
8
+ # Converts a ChunkyPNG pixel into an array of the red, green, blue, and alpha values
9
+ def self.getRGBA(pxl)
10
+ return [ChunkyPNG::Color.r(pxl), ChunkyPNG::Color.g(pxl), ChunkyPNG::Color.b(pxl), ChunkyPNG::Color.a(pxl)]
11
11
  end
12
12
  ##
13
13
  # Check if file is a PNG image. ChunkyPNG only works with PNG images. Eventually, I might use conversion tools to add support, but not right now.
@@ -119,12 +119,13 @@ module Pxlsrt
119
119
  r=((ca.collect { |c| c[0] }).inject{ |sum, el| sum+el }).to_f / ca.size
120
120
  g=((ca.collect { |c| c[1] }).inject{ |sum, el| sum+el }).to_f / ca.size
121
121
  b=((ca.collect { |c| c[2] }).inject{ |sum, el| sum+el }).to_f / ca.size
122
- return [r,g,b]
122
+ a=((ca.collect { |c| c[3] }).inject{ |sum, el| sum+el }).to_f / ca.size
123
+ return [r,g,b,a]
123
124
  end
124
125
  ##
125
126
  # Determines color distance from each other using the Pythagorean theorem.
126
127
  def self.colorDistance(c1,c2)
127
- return Math.sqrt((c1[0]-c2[0])**2+(c1[1]-c2[1])**2+(c1[2]-c2[2])**2)
128
+ return Math.sqrt((c1[0]-c2[0])**2+(c1[1]-c2[1])**2+(c1[2]-c2[2])**2+(c1[3]-c2[3])**2)
128
129
  end
129
130
  ##
130
131
  # Uses a combination of color averaging and color distance to find how "unique" a color is.
@@ -133,17 +134,43 @@ module Pxlsrt
133
134
  end
134
135
  ##
135
136
  # Sorts an array of colors based on a method.
137
+ # Available methods:
138
+ # * sum-rgb (default)
139
+ # * sum-rgba
140
+ # * red
141
+ # * yellow
142
+ # * green
143
+ # * cyan
144
+ # * blue
145
+ # * magenta
146
+ # * hue
147
+ # * saturation
148
+ # * brightness
149
+ # * sum-hsb
150
+ # * sum-hsba
151
+ # * uniqueness
152
+ # * luma
153
+ # * random
154
+ # * alpha
136
155
  def self.pixelSort(list, how, reverse)
137
156
  mhm=[]
138
157
  case how.downcase
139
158
  when "sum-rgb"
140
159
  mhm= list.sort_by { |c| Pxlsrt::Colors.pxldex(c) }
160
+ when "sum-rgba"
161
+ mhm=list.sort_by { |c| Pxlsrt::Colors.pxldex(c)+c[3] }
141
162
  when "red"
142
163
  mhm= list.sort_by { |c| c[0] }
164
+ when "yellow"
165
+ mhm=list.sort_by { |c| c[0]+c[1] }
143
166
  when "green"
144
167
  mhm= list.sort_by { |c| c[1] }
168
+ when "cyan"
169
+ mhm=list.sort_by { |c| c[1]+c[2] }
145
170
  when "blue"
146
171
  mhm= list.sort_by { |c| c[2] }
172
+ when "magenta"
173
+ mhm=list.sort_by { |c| c[0]+c[2] }
147
174
  when "hue"
148
175
  mhm= list.sort_by { |c| Pxlsrt::Colors.rgb2hsb(c)[0] }
149
176
  when "saturation"
@@ -152,6 +179,8 @@ module Pxlsrt
152
179
  mhm= list.sort_by { |c| Pxlsrt::Colors.rgb2hsb(c)[2] }
153
180
  when "sum-hsb"
154
181
  mhm= list.sort_by { |c| k=Pxlsrt::Colors.rgb2hsb(c); k[0]*100/360+k[1]+k[2] }
182
+ when "sum-hsb"
183
+ mhm= list.sort_by { |c| k=Pxlsrt::Colors.rgb2hsb(c); k[0]*100/360+k[1]+k[2]+k[3]*100/255 }
155
184
  when "uniqueness"
156
185
  avg=Pxlsrt::Colors.colorAverage(list)
157
186
  mhm=list.sort_by { |c| Pxlsrt::Colors.colorUniqueness(c, [avg]) }
@@ -159,6 +188,8 @@ module Pxlsrt
159
188
  mhm=list.sort_by { |c| Pxlsrt::Colors.pxldex([c[0]*0.2126, c[1]*0.7152, c[2]*0.0722]) }
160
189
  when "random"
161
190
  mhm=list.shuffle
191
+ when "alpha"
192
+ mhm=list.sort_by{ |c| c[3] }
162
193
  else
163
194
  mhm= list.sort_by { |c| Pxlsrt::Colors.pxldex(c) }
164
195
  end
@@ -210,8 +241,8 @@ module Pxlsrt
210
241
  end
211
242
  ##
212
243
  # Turns an RGB-like array into ChunkyPNG's color
213
- def self.arrayToRGB(a)
214
- return ChunkyPNG::Color.rgb(a[0], a[1], a[2])
244
+ def self.arrayToRGBA(a)
245
+ return ChunkyPNG::Color.rgba(a[0], a[1], a[2], a[3])
215
246
  end
216
247
  ##
217
248
  # Used in determining Sobel values.
data/lib/pxlsrt/smart.rb CHANGED
@@ -36,7 +36,7 @@ module Pxlsrt
36
36
  :vertical => [false, true],
37
37
  :diagonal => [false, true],
38
38
  :smooth => [false, true],
39
- :method => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random"],
39
+ :method => ["sum-rgb", "red", "green", "blue", "sum-hsb", "hue", "saturation", "brightness", "uniqueness", "luma", "random", "cyan", "magenta", "yellow", "alpha", "sum-rgba", "sum-hsba"],
40
40
  :verbose => [false, true],
41
41
  :absolute => [false, true],
42
42
  :threshold => [{:class => [Float, Fixnum]}],
@@ -90,7 +90,7 @@ module Pxlsrt
90
90
  else
91
91
  val = 2000000000
92
92
  end
93
- k.push({ "sobel" => val, "pixel" => [x, y], "color" => Pxlsrt::Colors.getRGB(img[x, y]) })
93
+ k.push({ "sobel" => val, "pixel" => [x, y], "color" => Pxlsrt::Colors.getRGBA(img[x, y]) })
94
94
  end
95
95
  if options[:vertical]==true
96
96
  Pxlsrt::Helpers.verbose("Rotating image for vertical mode...") if options[:verbose]
@@ -213,7 +213,7 @@ module Pxlsrt
213
213
  end
214
214
  Pxlsrt::Helpers.verbose("Giving pixels new RGB values...") if options[:verbose]
215
215
  for px in 0..(w*h-1)
216
- edge[px % w, (px/w).floor]=Pxlsrt::Colors.arrayToRGB(image[px])
216
+ edge[px % w, (px/w).floor]=Pxlsrt::Colors.arrayToRGBA(image[px])
217
217
  end
218
218
  endTime=Time.now
219
219
  timeElapsed=endTime-startTime
@@ -1,5 +1,5 @@
1
1
  ##
2
2
  # The main module, your best friend.
3
3
  module Pxlsrt
4
- VERSION = "1.2.0"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pxlsrt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - EVA-01
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-01 00:00:00.000000000 Z
11
+ date: 2014-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler