image_size 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.tmignore ADDED
@@ -0,0 +1 @@
1
+ /spec/test.*
data/image_size.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'image_size'
5
- s.version = '1.0.5'
5
+ s.version = '1.0.6'
6
6
  s.summary = %q{Measure image size using pure Ruby}
7
7
  s.description = %q{Measure following file dimensions: PCX, PSD, XPM, TIFF, XBM, PGM, PBM, PPM, BMP, JPEG, PNG, GIF, SWF}
8
8
  s.homepage = "http://github.com/toy/#{s.name}"
data/lib/image_size.rb CHANGED
@@ -1,39 +1,30 @@
1
1
  require 'stringio'
2
2
 
3
3
  class ImageSize
4
- JpegCodeCheck = [
5
- "\xc0", "\xc1", "\xc2", "\xc3",
6
- "\xc5", "\xc6", "\xc7",
7
- "\xc9", "\xca", "\xcb",
8
- "\xcd", "\xce", "\xcf",
9
- ]
10
-
11
4
  attr_reader :format, :width, :height
12
5
 
13
6
  # receive image & make size
14
7
  # argument is image String, StringIO or IO
15
8
  def initialize(data)
16
- @data = data.dup
17
-
18
- if @data.is_a?(IO)
19
- img_top = @data.read(1024)
20
- img_io = def_read_o(@data)
21
- elsif @data.is_a?(StringIO)
22
- img_top = @data.read(1024)
23
- img_io = def_read_o(@data)
24
- elsif @data.is_a?(String)
25
- img_top = @data[0, 1024]
26
- img_io = StringIO.open(@data)
9
+ data = data.dup
10
+
11
+ case data
12
+ when IO, StringIO
13
+ img_top = data.read(1024)
14
+ img_io = def_read_o(data)
15
+ when String
16
+ img_top = data[0, 1024]
17
+ img_io = StringIO.open(data)
27
18
  img_io = def_read_o(img_io)
28
19
  else
29
- raise "argument class error!! #{data.class}"
20
+ raise ArgumentError.new("expected instance of IO, StringIO or String, got #{data.class}")
30
21
  end
31
22
 
32
23
  if @format = check_format(img_top)
33
24
  @width, @height = self.send("measure_#{@format}", img_io)
34
25
  end
35
26
 
36
- if @data.is_a?(String)
27
+ if data.is_a?(String)
37
28
  img_io.close
38
29
  end
39
30
  end
@@ -96,6 +87,12 @@ private
96
87
  img_io.read_o(8).unpack('NN')
97
88
  end
98
89
 
90
+ JpegCodeCheck = [
91
+ "\xc0", "\xc1", "\xc2", "\xc3",
92
+ "\xc5", "\xc6", "\xc7",
93
+ "\xc9", "\xca", "\xcb",
94
+ "\xcd", "\xce", "\xcf",
95
+ ]
99
96
  def measure_jpeg(img_io)
100
97
  c_marker = "\xFF" # Section marker.
101
98
  img_io.read_o(2)
@@ -27,6 +27,13 @@ describe ImageSize do
27
27
  end
28
28
  end
29
29
 
30
+ it "should get format and dimensions for #{name} given StringIO" do
31
+ File.open(path, 'rb') do |fh|
32
+ is = ImageSize.new(StringIO.new(fh.read))
33
+ [is.format, is.width, is.height].should == [format, width, height]
34
+ end
35
+ end
36
+
30
37
  it "should get format and dimensions for #{name} given file data" do
31
38
  File.open(path, 'rb') do |fh|
32
39
  is = ImageSize.new(fh.read)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_size
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 5
10
- version: 1.0.5
9
+ - 6
10
+ version: 1.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Keisuke Minami
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-02-04 00:00:00 Z
19
+ date: 2012-02-08 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rspec
@@ -42,6 +42,7 @@ extra_rdoc_files: []
42
42
 
43
43
  files:
44
44
  - .gitignore
45
+ - .tmignore
45
46
  - README.markdown
46
47
  - image_size.gemspec
47
48
  - lib/image_size.rb