image_science 1.1.1 → 1.1.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.
- data/History.txt +6 -0
- data/Manifest.txt +2 -0
- data/lib/image_science.rb +10 -4
- data/test/pix.png +0 -0
- data/test/test_image_science.rb +124 -0
- metadata +6 -4
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/lib/image_science.rb
CHANGED
@@ -11,7 +11,7 @@ require 'inline'
|
|
11
11
|
# http://seattlerb.rubyforge.org/ImageScience.html
|
12
12
|
|
13
13
|
class ImageScience
|
14
|
-
VERSION = '1.1.
|
14
|
+
VERSION = '1.1.2'
|
15
15
|
|
16
16
|
##
|
17
17
|
# The top-level image loader opens +path+ and then yields the image.
|
@@ -181,11 +181,16 @@ class ImageScience
|
|
181
181
|
END
|
182
182
|
|
183
183
|
builder.c <<-"END"
|
184
|
-
VALUE resize(
|
184
|
+
VALUE resize(long w, long h) {
|
185
|
+
if (w <= 0) rb_raise(rb_eArgError, "Width <= 0");
|
186
|
+
if (h <= 0) rb_raise(rb_eArgError, "Height <= 0");
|
185
187
|
GET_BITMAP(bitmap);
|
186
188
|
FIBITMAP *image = FreeImage_Rescale(bitmap, w, h, FILTER_CATMULLROM);
|
187
|
-
|
188
|
-
|
189
|
+
if (image) {
|
190
|
+
copy_icc_profile(self, bitmap, image);
|
191
|
+
return wrap_and_yield(image, self, 0);
|
192
|
+
}
|
193
|
+
return Qnil;
|
189
194
|
}
|
190
195
|
END
|
191
196
|
|
@@ -196,6 +201,7 @@ class ImageScience
|
|
196
201
|
if ((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsWriting(fif)) {
|
197
202
|
GET_BITMAP(bitmap);
|
198
203
|
int flags = fif == FIF_JPEG ? JPEG_QUALITYSUPERB : 0;
|
204
|
+
if (fif == FIF_PNG) FreeImage_DestroyICCProfile(bitmap);
|
199
205
|
return FreeImage_Save(fif, bitmap, output, flags) ? Qtrue : Qfalse;
|
200
206
|
}
|
201
207
|
rb_raise(rb_eTypeError, "Unknown file format");
|
data/test/pix.png
ADDED
Binary file
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'test/unit/testcase'
|
2
|
+
require 'test/unit' if $0 == __FILE__
|
3
|
+
require 'image_science'
|
4
|
+
|
5
|
+
class TestImageScience < Test::Unit::TestCase
|
6
|
+
def deny x; assert ! x; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@path = 'test/pix.png'
|
10
|
+
@tmppath = 'test/pix-tmp.png'
|
11
|
+
@h = @w = 50
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
File.unlink @tmppath if File.exist? @tmppath
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_class_with_image
|
19
|
+
ImageScience.with_image @path do |img|
|
20
|
+
assert_kind_of ImageScience, img
|
21
|
+
assert_equal @h, img.height
|
22
|
+
assert_equal @w, img.width
|
23
|
+
assert img.save(@tmppath)
|
24
|
+
end
|
25
|
+
|
26
|
+
assert File.exists?(@tmppath)
|
27
|
+
|
28
|
+
ImageScience.with_image @tmppath do |img|
|
29
|
+
assert_kind_of ImageScience, img
|
30
|
+
assert_equal @h, img.height
|
31
|
+
assert_equal @w, img.width
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_class_with_image_missing
|
36
|
+
assert_raises TypeError do
|
37
|
+
ImageScience.with_image @path + "nope" do |img|
|
38
|
+
flunk
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_class_with_image_missing_with_img_extension
|
44
|
+
assert_nil ImageScience.with_image("nope#{@path}") do |img|
|
45
|
+
flunk
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_resize
|
50
|
+
ImageScience.with_image @path do |img|
|
51
|
+
img.resize(25, 25) do |thumb|
|
52
|
+
assert thumb.save(@tmppath)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
assert File.exists?(@tmppath)
|
57
|
+
|
58
|
+
ImageScience.with_image @tmppath do |img|
|
59
|
+
assert_kind_of ImageScience, img
|
60
|
+
assert_equal 25, img.height
|
61
|
+
assert_equal 25, img.width
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_resize_floats
|
66
|
+
ImageScience.with_image @path do |img|
|
67
|
+
img.resize(25.2, 25.7) do |thumb|
|
68
|
+
assert thumb.save(@tmppath)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
assert File.exists?(@tmppath)
|
73
|
+
|
74
|
+
ImageScience.with_image @tmppath do |img|
|
75
|
+
assert_kind_of ImageScience, img
|
76
|
+
assert_equal 25, img.height
|
77
|
+
assert_equal 25, img.width
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_resize_zero
|
82
|
+
assert_raises ArgumentError do
|
83
|
+
ImageScience.with_image @path do |img|
|
84
|
+
img.resize(0, 25) do |thumb|
|
85
|
+
assert thumb.save(@tmppath)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
deny File.exists?(@tmppath)
|
91
|
+
|
92
|
+
assert_raises ArgumentError do
|
93
|
+
ImageScience.with_image @path do |img|
|
94
|
+
img.resize(25, 0) do |thumb|
|
95
|
+
assert thumb.save(@tmppath)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
deny File.exists?(@tmppath)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_resize_negative
|
104
|
+
assert_raises ArgumentError do
|
105
|
+
ImageScience.with_image @path do |img|
|
106
|
+
img.resize(-25, 25) do |thumb|
|
107
|
+
assert thumb.save(@tmppath)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
deny File.exists?(@tmppath)
|
113
|
+
|
114
|
+
assert_raises ArgumentError do
|
115
|
+
ImageScience.with_image @path do |img|
|
116
|
+
img.resize(25, -25) do |thumb|
|
117
|
+
assert thumb.save(@tmppath)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
deny File.exists?(@tmppath)
|
123
|
+
end
|
124
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0.9
|
|
3
3
|
specification_version: 1
|
4
4
|
name: image_science
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.1.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.1.2
|
7
|
+
date: 2007-04-18 00:00:00 -04:00
|
8
8
|
summary: ImageScience is a clean and happy Ruby library that generates thumbnails -- and kicks the living crap out of RMagick.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -35,8 +35,10 @@ files:
|
|
35
35
|
- Rakefile
|
36
36
|
- bench.rb
|
37
37
|
- lib/image_science.rb
|
38
|
-
|
39
|
-
|
38
|
+
- test/pix.png
|
39
|
+
- test/test_image_science.rb
|
40
|
+
test_files:
|
41
|
+
- test/test_image_science.rb
|
40
42
|
rdoc_options: []
|
41
43
|
|
42
44
|
extra_rdoc_files: []
|