OSDN Git Service

t#29400:itr3?
[pettanr/pettanr.git] / spec / support / imager_test.rb
1 #画像処理
2 require 'digest/md5'
3 require 'RMagick'
4 class ImagerTest
5   @@tmb_w = 50
6   @@tmb_h = 50
7   
8   def self.tmb_w
9     @@tmb_w
10   end
11   
12   def self.tmb_w=(v)
13     @@tmb_w = v
14   end
15   
16   def self.tmb_h
17     @@tmb_h
18   end
19   
20   def self.tmb_h=(v)
21     @@tmb_h = v
22   end
23   
24   def initialize bindata
25     @binary = bindata
26     @lib = bindata.split /\n/
27     @ext= 'png'
28   end
29   
30   def self.load bindata
31     r = nil
32     begin
33       r = ImagerTest.new bindata
34     rescue 
35       r = false
36     end
37     r
38   end
39   
40   def binary
41     @binary
42   end
43   
44   def lib
45     @lib
46   end
47   
48   def width
49     @lib.first.size
50   end
51   
52   def height
53     @lib.size
54   end
55   
56   def filesize
57     @lib.join.size
58   end
59   
60   def ext
61     @ext
62   end
63   
64   def md5
65     'A'*32
66   end
67   
68   def v
69     @lib.map {|r| r.reverse}.join("\n")
70   end
71   
72   def h
73     @lib.reverse.join("\n")
74   end
75   
76   def vh
77     @lib.reverse.map {|r| r.reverse}.join("\n")
78   end
79   
80   def to_gif
81     @ext = 'gif'
82     ImagerTest.load @lib.map {|r| r.upcase}.join("\n")
83   end
84   
85   def to_thumbnail
86     ImagerTest.load('i')
87   end
88   
89   def thumbnail_size
90     ImagerTest.fix_size_both ImagerTest.tmb_w, ImagerTest.tmb_h, self.width, self.height
91   end
92   
93   #ただサイズ計算したいとき
94   def self.thumbnail_size w, h
95     ImagerTest.fix_size_both ImagerTest.tmb_w, ImagerTest.tmb_h, w, h
96   end
97   
98   #サイズの調整(limw,limhに必ず収まるように合わせる)
99   def self.fix_size_both(limw, limh, w, h)
100     wr = if w > limw
101       limw*100/w
102     else
103       100
104     end
105     hr = if h > limh
106       limh*100/h
107     else
108       100
109     end
110     res = if wr < hr
111       #幅の方が圧縮率が高い
112       [w*wr/100, h*wr/100]
113     else
114       #高さの方が圧縮率が高い
115       [w*hr/100, h*hr/100]
116     end
117     res
118   end
119   
120 end
121
122 =begin
123 i = ImagerTest.load "abc\ndef\nghi"
124 p i.binary
125 p i.lib
126 p i.width
127 p i.height
128 p i.filesize
129 p i.ext
130 p i.md5
131 p i.v
132 p i.h
133 p i.vh
134 p i.to_gif
135 p i.to_thumbnail
136 =end