pikl 0.2.8-x86-mswin32 → 0.3.0-x86-mswin32

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.
Files changed (75) hide show
  1. data/History.txt +9 -0
  2. data/License.txt +0 -0
  3. data/Manifest.txt +17 -17
  4. data/README.txt +0 -0
  5. data/config/hoe.rb +9 -6
  6. data/config/requirements.rb +0 -0
  7. data/ext/pikl/pikl.h +617 -465
  8. data/ext/pikl/pikl_affine.c +38 -91
  9. data/ext/pikl/pikl_affine.h +0 -0
  10. data/ext/pikl/pikl_bitmap.c +0 -0
  11. data/ext/pikl/pikl_bitmap.h +0 -0
  12. data/ext/pikl/pikl_blur.c +4 -8
  13. data/ext/pikl/pikl_blur.h +0 -0
  14. data/ext/pikl/pikl_camera.c +218 -0
  15. data/ext/pikl/{pikl_effect3.h → pikl_camera.h} +2 -2
  16. data/ext/pikl/pikl_composite.c +175 -0
  17. data/ext/pikl/pikl_composite.h +12 -0
  18. data/ext/pikl/pikl_decrease.c +110 -45
  19. data/ext/pikl/pikl_decrease.h +0 -7
  20. data/ext/pikl/pikl_divide.c +116 -0
  21. data/ext/pikl/pikl_divide.h +11 -0
  22. data/ext/pikl/pikl_effect.c +583 -151
  23. data/ext/pikl/pikl_effect.h +32 -6
  24. data/ext/pikl/pikl_enhance.c +274 -0
  25. data/ext/pikl/pikl_enhance.h +20 -0
  26. data/ext/pikl/pikl_io.c +174 -23
  27. data/ext/pikl/pikl_io.h +0 -0
  28. data/ext/pikl/pikl_jpeg.c +0 -0
  29. data/ext/pikl/pikl_jpeg.h +0 -0
  30. data/ext/pikl/pikl_pattern.c +383 -357
  31. data/ext/pikl/pikl_pattern.h +0 -0
  32. data/ext/pikl/pikl_pixel.c +173 -0
  33. data/ext/pikl/{pikl_trim.h → pikl_pixel.h} +2 -2
  34. data/ext/pikl/pikl_png.c +0 -0
  35. data/ext/pikl/pikl_png.h +0 -0
  36. data/ext/pikl/pikl_private.h +12 -5
  37. data/ext/pikl/pikl_resize.c +0 -0
  38. data/ext/pikl/pikl_resize.h +0 -0
  39. data/ext/pikl/pikl_rotate.c +409 -51
  40. data/ext/pikl/pikl_rotate.h +8 -0
  41. data/ext/pikl/pikl_scrap.c +263 -483
  42. data/ext/pikl/pikl_scrap.h +0 -0
  43. data/ext/pikl/pikl_special.c +168 -0
  44. data/ext/pikl/{pikl_effect4.h → pikl_special.h} +2 -2
  45. data/ext/pikl/pikl_voronoi.c +320 -0
  46. data/ext/pikl/pikl_voronoi.h +37 -0
  47. data/lib/pikl.rb +4 -2
  48. data/lib/pikl/color.rb +47 -0
  49. data/lib/pikl/const.rb +106 -22
  50. data/lib/pikl/errors.rb +0 -0
  51. data/lib/pikl/ext.rb +115 -8
  52. data/lib/pikl/filter.rb +371 -0
  53. data/lib/pikl/image.rb +124 -117
  54. data/lib/pikl/pikl.dll +0 -0
  55. data/lib/pikl/version.rb +2 -2
  56. data/setup.rb +0 -0
  57. data/test/sample.jpg +0 -0
  58. data/test/test_helper.rb +0 -0
  59. data/test/test_pikl_image.rb +0 -14
  60. data/test/test_pikl_image2.rb +541 -0
  61. metadata +35 -23
  62. data/ext/pikl/decrease/fsdither.h +0 -554
  63. data/ext/pikl/decrease/median.c +0 -1179
  64. data/ext/pikl/decrease/median.h +0 -7
  65. data/ext/pikl/decrease/neuquan5.c +0 -563
  66. data/ext/pikl/decrease/neuquant.h +0 -62
  67. data/ext/pikl/decrease/wu.c +0 -447
  68. data/ext/pikl/decrease/wu.h +0 -7
  69. data/ext/pikl/pikl_effect2.c +0 -240
  70. data/ext/pikl/pikl_effect2.h +0 -55
  71. data/ext/pikl/pikl_effect3.c +0 -266
  72. data/ext/pikl/pikl_effect4.c +0 -495
  73. data/ext/pikl/pikl_rotate2.c +0 -312
  74. data/ext/pikl/pikl_rotate2.h +0 -19
  75. data/ext/pikl/pikl_trim.c +0 -28
data/lib/pikl/image.rb CHANGED
@@ -2,7 +2,7 @@ module Pikl
2
2
 
3
3
  class Image
4
4
 
5
- def self.open(inpath, &block)
5
+ def self.open(inpath, &block)
6
6
  image = Pikl::Image.new(inpath)
7
7
  image.instance_variable_set(:@block,block)
8
8
 
@@ -75,14 +75,10 @@ module Pikl
75
75
  end
76
76
 
77
77
  def rotate(angle, backcolor = "#FFFFFF", sample = :bilinear)
78
-
79
- if ROTATE_ANGLE.has_key?(angle.to_i)
80
- validate_rotate(angle)
81
- Ext.pkl_rotate(@pkl_image, ROTATE_ANGLE[angle.to_i])
82
- else
83
- ci = color_int(backcolor)
84
- Ext.pkl_rotate2(@pkl_image, angle.to_f, SAMPLES[sample.to_sym], ci[0], ci[1], ci[2], ci[3])
85
- end
78
+ ci = color_int(backcolor)
79
+ color = Ext.pkl_color_rgb(ci[0], ci[1], ci[2])
80
+ Ext.pkl_rotate(@pkl_image, angle.to_f, SAMPLES[sample.to_sym], color)
81
+ Ext.pkl_color_close(color)
86
82
  self
87
83
  end
88
84
 
@@ -140,109 +136,6 @@ module Pikl
140
136
  self.height <= self.width
141
137
  end
142
138
 
143
- # threshold=0-255
144
- # threshold=0の時は変化しません
145
- # threshold=255の時は全ての色にアンシャープ処理が働きます
146
- # edge=-10 .. 10
147
- # edge=0の時は変化しません
148
- # edge>0の時は値が大きいほど先鋭化されます
149
- # edge<0の時は値が小さいほどぼやけます
150
- #
151
- # 想定結果が得られる範囲は-10 .. 10程度です。
152
- # これを超える場合は、品質の保証はありません
153
- # ※画質によりこの通りではありません。-10..10の範囲より小さくなる可能性があります。
154
- def unshapmask(threshold, edge)
155
- Ext.pkl_unsharp(@pkl_image, threshold.to_i, edge.to_f)
156
- self
157
- end
158
-
159
- # コントラスト調整
160
- # コントラストを強くするということは、白い部分をより白く、
161
- # 黒い部分をより黒くするような変換を意味します。
162
- # 逆にコントラストを弱くした場合、白い部分と黒い部分の差が無くなり、灰色っぽい画像になります。
163
- # <rate>
164
- # 範囲:-127 .. 127
165
- # rate=0の時は変化しません
166
- # * rateが0以上の時は周波数によるコントラスト強調がおこなわれます
167
- # * rateが0未満の時は直線的に平坦化されます
168
- def contrast(rate)
169
- Ext.pkl_contrast(@pkl_image, rate.to_f)
170
- self
171
- end
172
-
173
- # レベル補正
174
- # ヒストグラムの平坦化をおこないます。各色の分布に偏りがある画像に有効な場合があります。
175
- # coeff = 平坦化時の係数です。1が標準です。1より小さい場合は暗く、1より大きい場合は明るくなります(0.0..2.0)
176
- # low = 全ピクセル数に対して、切り捨てる暗い色の総数の割合(0-100%)
177
- # high = 全ピクセル数に対して、切り捨てる明るい色の総数の割合(0-100%)
178
- def level(low, high, coeff)
179
- Ext.pkl_level(@pkl_image, low.to_f, high.to_f, coeff.to_f)
180
- self
181
- end
182
-
183
- # 明るさ調整
184
- # この明るさ調整は各色からcolor値を加算する単純な処理です。
185
- # colorに255を指定すれば、ただの白い画像になります
186
- # colorに-255を指定すると、ただの黒い画像になります。
187
- def brightness(color)
188
- Ext.pkl_brightness(@pkl_image, color.to_i)
189
- self
190
- end
191
-
192
- # 輝度(明るさ)・彩度(鮮やかさ)・色相(色合い)調整
193
- # * 具体的にどういうことかを理解したい場合は、mspaintの「色の編集」を見ると良いでしょう。
194
- # ym(輝度) -1 .. 1(0.1で10%up).0では変化なし
195
- # sm(彩度) -1 .. 1(0.1で10%up).0では変化なし
196
- # hd(色相) 360.0度回転(R=113.2/Ye=173.0/G=225.0/Cy=293.2/B=353.0/Mg=45.0).360の倍数では変化なし
197
- def hls(ym, sm ,hd)
198
- Ext.pkl_hls(@pkl_image, ym.to_f, sm.to_f, hd.to_f)
199
- self
200
- end
201
-
202
- # gamma correction
203
- # _gm_ :: compensating rate.
204
- # gm must be >= 0 and image is neutral if gm value is 1.0.
205
- def gamma(gm)
206
- Ext.pkl_gamma(@pkl_image, gm.to_f)
207
- self
208
- end
209
-
210
- # mosaic effect
211
- # _width_ :: width for mosaic unit.
212
- # _height_ :: height for mosaic unit.
213
- def mosaic(width, height)
214
- Ext.pkl_mosaic(@pkl_image, width, height)
215
- self
216
- end
217
-
218
- # compose image
219
- # _image_ :: another pikl image object.
220
- # _xpos_ :: left position of composing image.
221
- # _ypos_ :: top position of composing image.
222
- def compose(image, xpos, ypos)
223
- Ext.pkl_composite(@pkl_image, image.rawdata, xpos, ypos)
224
- self
225
- end
226
-
227
- # mediancut to decrease colors.
228
- # _ncolors_ :: num of colors.(1..256)
229
- # _dither_ :: dither. true/false
230
- def mediancut(ncolors, dither)
231
- dither = dither ? 1 : 0
232
- Ext.pkl_mediancut(@pkl_image, 4, dither)
233
- self
234
- end
235
-
236
- # alphablend
237
- # _image_ :: another pikl image object.
238
- # _xpos_ :: left position of blend image.
239
- # _ypos_ :: top position of blend image.
240
- # _alpha_ :: alpha: α-value(0-255). 255 is complete transparent.
241
- def alphablend(image, xpos, ypos, alpha)
242
- Ext.pkl_alphablend(@pkl_image, image.rawdata, xpos, ypos, alpha);
243
- self
244
- end
245
-
246
139
  # regular expressions to try for identifying extensions
247
140
  def split_extensions(path)
248
141
  filename = path.split('/').last
@@ -267,11 +160,6 @@ module Pikl
267
160
  error("left is outside the range. #{x}") if x > self.width.to_i
268
161
  error("top is outside the range. #{y}") if y > self.height.to_i
269
162
  end
270
-
271
- def validate_rotate(angle)
272
- validate_numeric(angle)
273
- error("invalid angle. # => #{angle}") unless ROTATE_ANGLE.has_key?(angle)
274
- end
275
163
 
276
164
  def validate_resize(width, height)
277
165
  validate_auto(width, height)
@@ -307,6 +195,125 @@ module Pikl
307
195
  #self.close
308
196
  raise Pikl::ParameterException.new(message)
309
197
  end
198
+
199
+
200
+ ##--soezimaster add.
201
+ # オープン済みファイルディスクリプタからPiklを生成する
202
+ def fdopen(fd)
203
+ self.close
204
+ error("invalid parameter. # => #{fd}") unless fd.class.name == 'File'
205
+ @pkl_image = Ext.pkl_fdopen(fd)
206
+ end
207
+
208
+ # 複製
209
+ def dup(src)
210
+ self.close
211
+ error("invalid parameter. # => #{src}") unless src.class.name == 'Pikl::Image'
212
+ @pkl_image = Ext.pkl_dup(src.rawdata)
213
+ end
214
+
215
+ # 新規のキャンバスを作成する
216
+ def canvas(width, height, colorspace, color)
217
+ self.close
218
+ error("invalid parameter. # => #{color}") if color.nil?
219
+ error("invalid parameter. # => #{color}") if color.class.name != 'Pikl::Color'
220
+ error("invalid parameter. # => #{colorspace}") unless COLORSPACE.include?(colorspace)
221
+ validate_pix(width)
222
+ validate_pix(height)
223
+ @pkl_image = Ext.pkl_canvas(width, height, COLORSPACE[colorspace], color.rawdata)
224
+ end
225
+
226
+ # オープン済みファイルディスクリプタ(もしくはIO)にイメージを書き出す
227
+ def output(fd, format, compress=nil)
228
+ raise Pikl::ImageProcessException.new("image already closed.") unless @pkl_image
229
+ error("invalid parameter. # => #{fd}") unless ['File', 'IO'].include?(fd.class.name)
230
+ validate_format(format)
231
+ if compress
232
+ validate_compress(compress)
233
+ Ext.pkl_compress(@pkl_image, compress.to_i)
234
+ end
235
+
236
+ Ext.pkl_output(@pkl_image, fd, EXTENSIONS_FORMATS[format.to_s.downcase] || format.to_i)
237
+ self.close unless(@block)
238
+ @pkl_image
239
+ end
240
+
241
+ # 色数を数える
242
+ def count
243
+ Ext.pkl_count(@pkl_image) if(@pkl_image)
244
+ end
245
+
246
+ # カラースペースを返す
247
+ def colorspace
248
+ nil unless(@pkl_image)
249
+ COLORSPACE.find{ |k, v|
250
+ v == Ext.pkl_colorspace(@pkl_image)
251
+ return k
252
+ }
253
+ end
254
+
255
+ # 特定ピクセルの色を取り出す
256
+ def getcolor(x, y, colormodel)
257
+ nil unless(@pkl_image)
258
+ validate_position(x, y)
259
+ error("invalid parameter. # => #{colormodel}") unless COLORMODEL.include?(colormodel)
260
+ Ext.pkl_get_color(@pkl_image, x, y, COLORMODEL[colormodel])
261
+ end
262
+
263
+ # 特定ピクセルに色をセットする
264
+ def setcolor(x, y, colormodel, color)
265
+ nil unless(@pkl_image)
266
+ validate_position(x, y)
267
+ error("invalid parameter. # => #{colormodel}") unless COLORMODEL.include?(colormodel)
268
+ validate_numeric(color)
269
+ error("invalid parameter. # => #{color}") unless color>=0 && color<=255
270
+ Ext.pkl_set_color(@pkl_image, x, y, COLORMODEL[colormodel], color)
271
+ end
272
+
273
+ # 特定ピクセルの色を取り出す
274
+ def getpixel(x, y)
275
+ return unless @pkl_image
276
+ validate_position(x, y)
277
+ color = Ext.pkl_get_pixel(self.rawdata, x, y)
278
+
279
+ case self.colorspace
280
+ when :GRAY
281
+ v = { 'gray' => Ext.pkl_color(color, COLORMODEL[:gray]) }
282
+ when :RGB
283
+ v = {
284
+ 'red' => Ext.pkl_color(color, COLORMODEL[:red]),
285
+ 'green' => Ext.pkl_color(color, COLORMODEL[:green]),
286
+ 'blue' => Ext.pkl_color(color, COLORMODEL[:blue]) }
287
+ when :CMYK
288
+ v = {
289
+ 'cyan' => Ext.pkl_color(color, COLORMODEL[:cyan]),
290
+ 'magenta' => Ext.pkl_color(color, COLORMODEL[:magenta]),
291
+ 'yellow' => Ext.pkl_color(color, COLORMODEL[:yellow]),
292
+ 'black' => Ext.pkl_color(color, COLORMODEL[:black]) }
293
+ else
294
+ v=nil
295
+ end
296
+ Ext.pkl_color_close(color)
297
+ return v
298
+ end
299
+
300
+ # 特定ピクセルに色を設定する
301
+ def setpixel(x, y, color, auto=true)
302
+ return unless @pkl_image
303
+ validate_position(x, y)
304
+ error("invalid parameter. # => #{color}") if color.nil?
305
+ error("invalid parameter. # => #{color}") if color.class.name != 'Pikl::Color'
306
+ Ext.pkl_set_pixel(@pkl_image, x, y, color.rawdata)
307
+ color.close if(auto)
308
+ end
309
+
310
+ def validate_position(x, y)
311
+ validate_numeric(x)
312
+ validate_numeric(y)
313
+ error("value is outside the range. #{x}") if x<0 || x>=self.width
314
+ error("value is outside the range. #{y}") if y<0 || y>=self.height
315
+ end
316
+
310
317
  end
311
318
  end
312
319
 
data/lib/pikl/pikl.dll CHANGED
Binary file
data/lib/pikl/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Pikl #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 2
5
- TINY = 8
4
+ MINOR = 3
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/setup.rb CHANGED
File without changes
data/test/sample.jpg CHANGED
File without changes
data/test/test_helper.rb CHANGED
File without changes
@@ -313,20 +313,6 @@ class TestPiklImage < Test::Unit::TestCase
313
313
 
314
314
  end
315
315
 
316
- def test_validate_rotate
317
- Pikl::Image.open(SAMPLE_IMAGE) do |img|
318
-
319
- assert_raise(Pikl::ParameterException){img.validate_rotate(15)}
320
- assert_nil(img.validate_rotate(0))
321
- assert_nil(img.validate_rotate(90))
322
- assert_nil(img.validate_rotate(180))
323
- assert_nil(img.validate_rotate(270))
324
- assert_nil(img.validate_rotate(360))
325
-
326
- end
327
-
328
- end
329
-
330
316
  def test_validate_resize
331
317
  Pikl::Image.open(SAMPLE_IMAGE) do |img|
332
318
 
@@ -0,0 +1,541 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestPiklImage < Test::Unit::TestCase
4
+
5
+ SAMPLE_IMAGE = File.dirname(__FILE__) + '/sample.jpg'
6
+ SAMPLE_OUTPUT = File.dirname(__FILE__) + '/output.jpg'
7
+ TESTOUT_DIR = File.dirname(__FILE__) + '/out'
8
+
9
+ SAMPLE_IMAGE_W = 120
10
+ SAMPLE_IMAGE_H = 160
11
+
12
+ def setup
13
+ #out�̉����������I
14
+ end
15
+
16
+ def teardown
17
+ if File.exists? SAMPLE_OUTPUT
18
+ File.delete SAMPLE_OUTPUT
19
+ end
20
+ end
21
+
22
+
23
+ def test_fdopen
24
+ assert_raise(Pikl::ParameterException){
25
+ f = "test"
26
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
27
+ pk.fdopen(f)
28
+ pk.close
29
+ }
30
+
31
+ f = open(SAMPLE_IMAGE, "rb")
32
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
33
+ pk.fdopen(f)
34
+ pk.save(TESTOUT_DIR + "/fdopen.jpg");
35
+ pk.close
36
+ end
37
+
38
+ def test_dup
39
+ assert_raise(Pikl::ParameterException){
40
+ src = "test"
41
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
42
+ pk.dup(src)
43
+ pk.close
44
+ }
45
+
46
+ src = Pikl::Image.new(SAMPLE_IMAGE)
47
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
48
+ pk.dup(src)
49
+ src.close
50
+ pk.save(TESTOUT_DIR + "/dup.jpg");
51
+ pk.close
52
+ end
53
+
54
+ def test_canvas
55
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
56
+ pk.canvas(100, 100, :GRAY, Pikl::Color.gray(100))
57
+ pk.save(TESTOUT_DIR + "/canvas_gray.jpg")
58
+ pk.close
59
+
60
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
61
+ pk.canvas(100, 100, :RGB, Pikl::Color.rgb(0xff, 0xff, 0xff))
62
+ pk.save(TESTOUT_DIR + "/canvas_rgb.jpg")
63
+ pk.close
64
+
65
+ pk = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
66
+ pk.canvas(100, 100, :CMYK, Pikl::Color.cmyk(0xff, 0, 0xff, 0xff))
67
+ pk.save(TESTOUT_DIR + "/canvas_cmyk.jpg")
68
+ pk.close
69
+ end
70
+
71
+ def test_output
72
+ f = open(TESTOUT_DIR+'/output.jpg', "wb")
73
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
74
+ pk.output(f, pk.format)
75
+ #pk.output($stdout, pk.format)
76
+ pk.close
77
+ f.close
78
+ end
79
+
80
+ def test_count
81
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
82
+ assert_equal(pk.count, 12979)
83
+ pk.close
84
+ end
85
+
86
+ def test_colorspace
87
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
88
+ assert_equal(pk.colorspace, :RGB)
89
+ pk.close
90
+ end
91
+
92
+ def test_getcolor
93
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
94
+ assert_equal(pk.getcolor(0, 0, :red), 207)
95
+ assert_equal(pk.getcolor(0, 0, :green), 206)
96
+ assert_equal(pk.getcolor(0, 0, :blue), 201)
97
+ pk.close
98
+ end
99
+
100
+ def test_setcolor
101
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
102
+ for y in 0..100 do
103
+ for x in 0..100 do
104
+ pk.setcolor(x, y, :red, 255)
105
+ end
106
+ end
107
+ pk.save(TESTOUT_DIR + "/setcolor.jpg")
108
+ pk.close
109
+ end
110
+
111
+ def test_getpixel
112
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
113
+ color = pk.getpixel(0,0)
114
+ assert_equal(color['red'], 207)
115
+ assert_equal(color['green'], 206)
116
+ assert_equal(color['blue'], 201)
117
+ pk.close
118
+ end
119
+
120
+ def test_setpixel
121
+ color = Pikl::Color.rgb(100,100,100)
122
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
123
+ for y in 0..100 do
124
+ for x in 0..100 do
125
+ pk.setpixel(x, y, color, false)
126
+ end
127
+ end
128
+ pk.save(TESTOUT_DIR + "/setpixel.jpg")
129
+ pk.close
130
+ color.close
131
+ end
132
+
133
+ def test_invert
134
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
135
+ pk.invert
136
+ pk.save(TESTOUT_DIR + "/invert.jpg")
137
+ pk.close
138
+ end
139
+
140
+ def test_alphaedge
141
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
142
+ pk.alphaedge(8, 1.5, 1.5, 1.0, 30, 50)
143
+ pk.save(TESTOUT_DIR + "/alphaedge.jpg")
144
+ pk.close
145
+ end
146
+
147
+ def test_crayon
148
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
149
+ pk.crayon
150
+ pk.save(TESTOUT_DIR + "/crayon.jpg")
151
+ pk.close
152
+ end
153
+
154
+ def test_edgeposter
155
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
156
+ pk.edgeposter(4, 9.0, 9.0, 1.0, 1)
157
+ pk.save(TESTOUT_DIR + "/edgeposter.jpg")
158
+ pk.close
159
+ end
160
+
161
+ def test_hydrangea
162
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
163
+ pk.hydrangea
164
+ pk.save(TESTOUT_DIR + "/hydrangea.jpg")
165
+ pk.close
166
+ end
167
+
168
+ def test_rinkaku
169
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
170
+ pk.rinkaku
171
+ pk.save(TESTOUT_DIR + "/rinkaku.jpg")
172
+ pk.close
173
+ end
174
+
175
+ def test_voronoi_zone
176
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
177
+ pk.voronoi_zone(5)
178
+ pk.save(TESTOUT_DIR + "/voronoi_zone.jpg")
179
+ pk.close
180
+
181
+ color = Pikl::Color.rgb(0, 0, 0)
182
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
183
+ pk.voronoi_zone(5, color)
184
+ pk.save(TESTOUT_DIR + "/voronoi_zone_edge.jpg")
185
+ pk.close
186
+ color.close
187
+
188
+ end
189
+
190
+ def test_voronoi_count
191
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
192
+ pk.voronoi_count(300)
193
+ pk.save(TESTOUT_DIR + "/voronoi_count.jpg")
194
+ pk.close
195
+
196
+ color = Pikl::Color.rgb(0, 0, 0)
197
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
198
+ pk.voronoi_count(300, color)
199
+ pk.save(TESTOUT_DIR + "/voronoi_count_edge.jpg")
200
+ pk.close
201
+ color.close
202
+ end
203
+
204
+ def test_sepia
205
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
206
+ pk.sepia(0.89, 0.8, 0.5)
207
+ pk.save(TESTOUT_DIR + "/sepia.jpg")
208
+ pk.close
209
+ end
210
+
211
+ def test_oilpaint
212
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
213
+ pk.oilpaint(4)
214
+ pk.save(TESTOUT_DIR + "/oilpaint.jpg")
215
+ pk.close
216
+ end
217
+
218
+ def test_kuwahara
219
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
220
+ pk.kuwahara(4)
221
+ pk.save(TESTOUT_DIR + "/kuwahara.jpg")
222
+ pk.close
223
+ end
224
+
225
+ def test_blot
226
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
227
+ pk.blot(4)
228
+ pk.save(TESTOUT_DIR + "/blot.jpg")
229
+ pk.close
230
+ end
231
+
232
+ def test_vtr
233
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
234
+ pk.vtr(3, 10, 10)
235
+ pk.save(TESTOUT_DIR + "/vtr.jpg")
236
+ pk.close
237
+ end
238
+
239
+ def test_dither
240
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
241
+ pk.dither
242
+ pk.save(TESTOUT_DIR + "/dither.jpg")
243
+ pk.close
244
+ end
245
+
246
+ def test_edgepaint
247
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
248
+ pk.edgepaint
249
+ pk.save(TESTOUT_DIR + "/edgepaint.jpg")
250
+ pk.close
251
+ end
252
+
253
+ def test_edge
254
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
255
+ pk.edge
256
+ pk.save(TESTOUT_DIR + "/edge.jpg")
257
+ pk.close
258
+ end
259
+
260
+ def test_contour
261
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
262
+ pk.contour
263
+ pk.save(TESTOUT_DIR + "/contour.jpg")
264
+ pk.close
265
+ end
266
+
267
+ def test_focus
268
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
269
+ pk.focus
270
+ pk.save(TESTOUT_DIR + "/focus.jpg")
271
+ pk.close
272
+ end
273
+
274
+ def test_emboss
275
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
276
+ pk.emboss
277
+ pk.save(TESTOUT_DIR + "/emboss.jpg")
278
+ pk.close
279
+ end
280
+
281
+ def test_custom_emboss
282
+ mask = [-1, -1, -1,
283
+ -1, 8, -1,
284
+ -1, -1, -1]
285
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
286
+ pk.emboss2(mask, 3, 3)
287
+ pk.save(TESTOUT_DIR + "/custom_emboss.jpg")
288
+ pk.close
289
+ end
290
+
291
+ def test_noisecut
292
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
293
+ pk.noisecut
294
+ pk.save(TESTOUT_DIR + "/noisecut.jpg")
295
+ pk.close
296
+ end
297
+
298
+ def test_blur
299
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
300
+ pk.blur(3)
301
+ pk.save(TESTOUT_DIR + "/blur.jpg")
302
+ pk.close
303
+
304
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
305
+ pk.gaussblur(3.0)
306
+ pk.save(TESTOUT_DIR + "/gaussblur.jpg")
307
+ pk.close
308
+
309
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
310
+ pk.rblur
311
+ pk.save(TESTOUT_DIR + "/rblur.jpg")
312
+ pk.close
313
+
314
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
315
+ pk.ablur
316
+ pk.save(TESTOUT_DIR + "/ablur.jpg")
317
+ pk.close
318
+
319
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
320
+ pk.wblur
321
+ pk.save(TESTOUT_DIR + "/wblur.jpg")
322
+ pk.close
323
+
324
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
325
+ pk.mblur(30.0, 5)
326
+ pk.save(TESTOUT_DIR + "/mblur.jpg")
327
+ pk.close
328
+ end
329
+
330
+ def test_shadowframe
331
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
332
+ pk.shadowframe(10)
333
+ pk.save(TESTOUT_DIR + "/shadowframe.jpg")
334
+ pk.close
335
+ end
336
+
337
+ def test_randomshadow
338
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
339
+
340
+ canvas = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
341
+ canvas.canvas(300, 300, :RGB, Pikl::Color.rgb(0xff, 0xff, 0xff))
342
+
343
+ canvas.randomshadow(pk, 100, 100, 10)
344
+ canvas.randomshadow(pk, 50, 50, 10)
345
+ canvas.randomshadow(pk, 0, 0, 10)
346
+
347
+ canvas.save(TESTOUT_DIR + "/randomshadow.jpg")
348
+ canvas.close
349
+ pk.close
350
+ end
351
+
352
+
353
+ def test_color_emboss
354
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
355
+ pk.color_emboss(100, 70)
356
+ pk.save(TESTOUT_DIR + "/color_emboss.jpg")
357
+ pk.close
358
+ end
359
+
360
+ def test_pixelate
361
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
362
+ pk.pixelate(2)
363
+ pk.save(TESTOUT_DIR + "/pixelate.jpg")
364
+ pk.close
365
+ end
366
+
367
+ def test_grid
368
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
369
+ pk.grid(5, 5, 100)
370
+ pk.save(TESTOUT_DIR + "/grid.jpg")
371
+ pk.close
372
+ end
373
+
374
+ def test_posterize
375
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
376
+ pk.posterize(8)
377
+ pk.save(TESTOUT_DIR + "/posterize.jpg")
378
+ pk.close
379
+ end
380
+
381
+ def test_cutcolor
382
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
383
+ pk.cutcolor(0b10101100)
384
+ pk.save(TESTOUT_DIR + "/cutcolor.jpg")
385
+ pk.close
386
+ end
387
+
388
+ def test_gray
389
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
390
+ pk.gray
391
+ pk.save(TESTOUT_DIR + "/gray.jpg")
392
+ pk.close
393
+
394
+ pk = Pikl::Image.new(TESTOUT_DIR + "/gray.jpg")
395
+ pk.blackwhite
396
+ pk.save(TESTOUT_DIR + "/blackwhite.jpg")
397
+ pk.close
398
+ end
399
+
400
+ def test_tileslit
401
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
402
+ pk.tileslit(10,5)
403
+ pk.save(TESTOUT_DIR + "/tileslit.jpg")
404
+ pk.close
405
+ end
406
+
407
+ def test_splitframe
408
+ color = Pikl::Color.rgb(200,100,255)
409
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
410
+ pk.splitframe(color, 5, 5, 3, 2)
411
+ pk.save(TESTOUT_DIR + "/splitframe.jpg")
412
+ pk.close
413
+ end
414
+
415
+ def test_vignette
416
+ color = Pikl::Color.rgb(0,0,0)
417
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
418
+ pk.vignette(color, 50, 80)
419
+ pk.save(TESTOUT_DIR + "/vignette.jpg")
420
+ pk.close
421
+ color.close
422
+ end
423
+
424
+ def test_vaseline
425
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
426
+ pk.vaseline(80)
427
+ pk.save(TESTOUT_DIR + "/vaseline.jpg")
428
+ pk.close
429
+ end
430
+
431
+ def test_vv
432
+ color = Pikl::Color.rgb(0,0,0)
433
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
434
+ pk.vv(color, 50, 80)
435
+ pk.save(TESTOUT_DIR + "/vv.jpg")
436
+ pk.close
437
+ color.close
438
+ end
439
+
440
+ def test_film
441
+ color = Pikl::Color.rgb(200,100,150)
442
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
443
+ pk.film(color, 30)
444
+ pk.save(TESTOUT_DIR + "/film.jpg")
445
+ pk.close
446
+ color.close
447
+ end
448
+
449
+ def test_swirl
450
+ color = Pikl::Color.rgb(200,100,150)
451
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
452
+ pk.swirl(0.005, -1, -1, color)
453
+ pk.save(TESTOUT_DIR + "/swirl.jpg")
454
+ pk.close
455
+ color.close
456
+ end
457
+
458
+ def test_wave
459
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
460
+ pk.wave(15.0, 5.0)
461
+ pk.save(TESTOUT_DIR + "/wave.jpg")
462
+ pk.close
463
+ end
464
+
465
+ def test_dots
466
+ color = Pikl::Color.rgb(200,100,150)
467
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
468
+ pk.dots(3, color)
469
+ pk.save(TESTOUT_DIR + "/dots.jpg")
470
+ pk.close
471
+ color.close
472
+ end
473
+
474
+ def test_colordither
475
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
476
+ pk.colordither(50)
477
+ pk.save(TESTOUT_DIR + "/colordither.jpg")
478
+ pk.close
479
+ end
480
+
481
+ def test_fantasy
482
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
483
+ pk.fantasy(1, 0.5, 1.0, 0)
484
+ pk.save(TESTOUT_DIR + "/fantasy.jpg")
485
+ pk.close
486
+ end
487
+
488
+ def test_illust
489
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
490
+ pk.illust(50,20,50)
491
+ pk.save(TESTOUT_DIR + "/illust.jpg")
492
+ pk.close
493
+ end
494
+
495
+ def test_pattern
496
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
497
+ pk.pattern(3,9)
498
+ pk.save(TESTOUT_DIR + "/pattern.jpg")
499
+ pk.close
500
+ end
501
+
502
+ def test_tile
503
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
504
+ pk.tile(5,5,50)
505
+ pk.save(TESTOUT_DIR + "/tile.jpg")
506
+ pk.close
507
+ end
508
+
509
+ def test_affine
510
+ color = Pikl::Color.rgb(200,100,150)
511
+ pk = Pikl::Image.new(SAMPLE_IMAGE)
512
+ pk.affine(300, 300, color, 2.0, 2.0, 30.0, 50, 50)
513
+ pk.save(TESTOUT_DIR + "/affine.jpg")
514
+ pk.close
515
+ color.close
516
+ end
517
+
518
+
519
+ def test_special
520
+ Pikl::Image.open(SAMPLE_IMAGE) do |img|
521
+ img.posterize(8)
522
+ img.noisecut
523
+
524
+ img2 = Pikl::Image.new(Pikl::DEFAULT_IMAGE)
525
+ img2.dup(img)
526
+ img2.level(5.0, 5.0, 1.0)
527
+
528
+ img.brightness(50)
529
+ img.edge(30)
530
+
531
+ img.alphablend(img2, 0, 0, 70)
532
+
533
+ img.save(TESTOUT_DIR + "/special.jpg")
534
+ img.close
535
+ img2.close
536
+ end
537
+ end
538
+
539
+ end
540
+
541
+