Rubimage 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0e9c789c6c8f0917ed10803ace15083da17ddb23
4
+ data.tar.gz: 1b2af86c3bf23f5b3e466b4443b78580535c84f9
5
+ SHA512:
6
+ metadata.gz: 52b541af0fa5a54c446f1e23203be3fa009d75926adac51bd48af56807c172c8596403b499e6ed33574f33db51a3c6c03963220937f81a879bd7a5bbdfe16b73
7
+ data.tar.gz: b71b7d5c8ef6fd2f89aec393059019c1962dfb2bc4b5447726793b42761a4f3938faa29dac7539dcf69f1570c18f715b52f5abf55bf8aca8a5c84b2aceaec21d
@@ -0,0 +1,46 @@
1
+ module Rubimage
2
+ class ImageReader
3
+
4
+ BINARY = 'rb'
5
+ BYTE = 1
6
+ TWO_BYTES = 2
7
+ FOUR_BYTES = 4
8
+ SHORT = 'n'
9
+ INT = 'N'
10
+
11
+ attr_reader :width, :height, :dimensions
12
+
13
+ def initialize(path)
14
+ @file = File.open path, BINARY
15
+ end
16
+
17
+ private
18
+ def end?
19
+ @file.eof?
20
+ end
21
+
22
+ def skip_bytes(bytes = 1)
23
+ @file.read BYTE * bytes
24
+ end
25
+
26
+ def next_byte
27
+ @file.readbyte
28
+ end
29
+
30
+ def next_short
31
+ @file.read(TWO_BYTES).unpack(SHORT)[0]
32
+ end
33
+
34
+ def next_int
35
+ @file.read(FOUR_BYTES).unpack(INT)[0]
36
+ end
37
+
38
+ def closed?
39
+ @file.closed?
40
+ end
41
+
42
+ def close
43
+ @file.close
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,25 @@
1
+ module Rubimage
2
+ class JpgReader < ImageReader
3
+
4
+ FF = 0xff
5
+ SOf = 0xc0..0xcf
6
+
7
+ def initialize(path)
8
+ super path
9
+ read
10
+ end
11
+
12
+ def read
13
+ until closed? or end?
14
+ buf = next_byte
15
+ if buf == FF and SOf.include? next_byte
16
+ skip_bytes 3
17
+ @height = next_short
18
+ @width = next_short
19
+ @dimensions = [@width, @height]
20
+ close
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ module Rubimage
2
+
3
+ class PngReader < ImageReader
4
+ PNG_HEADER = 16
5
+
6
+ def initialize(path)
7
+ super(path)
8
+ read
9
+ end
10
+
11
+ private
12
+ def read
13
+ skip_bytes PNG_HEADER
14
+ @width = next_int
15
+ @height = next_int
16
+ @dimensions = [@width, @height]
17
+ close
18
+ end
19
+ end
20
+
21
+ end
data/lib/rubimage.rb ADDED
@@ -0,0 +1,23 @@
1
+ require_relative 'rubimage/image_reader'
2
+ require_relative 'rubimage/jpg_reader'
3
+ require_relative 'rubimage/png_reader'
4
+
5
+ module Rubimage
6
+
7
+ PNG = '.png'
8
+ JPG = '.jpg'
9
+ JPEG = '.jpeg'
10
+
11
+ def self.Info(path)
12
+ ext_type = File.extname path
13
+ case ext_type
14
+ when PNG
15
+ type = Rubimage::PngReader.new path
16
+ when JPG, JPEG
17
+ type = Rubimage::JpgReader.new path
18
+ else
19
+ raise "#{ext_type} is not currently supported"
20
+ end
21
+ end
22
+ end
23
+
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Rubimage
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dylan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-06-18 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Rubimage gives you the width and height of an jpg, png and tiff
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/rubimage.rb
20
+ - lib/rubimage/image_reader.rb
21
+ - lib/rubimage/jpg_reader.rb
22
+ - lib/rubimage/png_reader.rb
23
+ homepage:
24
+ licenses: []
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.1.10
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Ruby image tools
46
+ test_files: []