cul_image_props 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -110,6 +110,7 @@ end
110
110
 
111
111
  # class that handles an EXIF header
112
112
  class EXIF_header
113
+ X00 = [0x00].pack('C')
113
114
  attr_accessor :tags
114
115
  def initialize(file, endian, offset, fake_exif, strict, detail=true)
115
116
  @file = file
@@ -158,7 +159,7 @@ class EXIF_header
158
159
  end
159
160
  # Sign extension ?
160
161
  if signed
161
- msb= 1 << (8*length-1)
162
+ msb= 1 << (8*src.length-1)
162
163
  if val & msb
163
164
  val=val-(msb << 1)
164
165
  end
@@ -178,19 +179,7 @@ class EXIF_header
178
179
  return 0
179
180
  end
180
181
  slice=@file.read(length)
181
- if @endian == 'I'
182
- val=s2n_intel(slice)
183
- else
184
- val=s2n_motorola(slice)
185
- end
186
- # Sign extension ?
187
- if signed
188
- msb= 1 << (8*length-1)
189
- if val & msb
190
- val=val-(msb << 1)
191
- end
192
- end
193
- return val
182
+ return unpack_number(slice,signed)
194
183
  end
195
184
 
196
185
  # convert offset to string
@@ -298,7 +287,7 @@ class EXIF_header
298
287
  values = @file.read(count)
299
288
  #print values
300
289
  # Drop any garbage after a null.
301
- values = values.split('\x00', 1)[0]
290
+ values = values.split(X00, 1)[0]
302
291
  else
303
292
  values = ''
304
293
  end
@@ -326,7 +315,7 @@ class EXIF_header
326
315
  if count == 1 and field_type != 2
327
316
  printable=values[0].to_s
328
317
  elsif count > 50 and values.length > 20
329
- printable= "[" + values[0...20].join(',') + ", ... ]"
318
+ printable= (field_type == 2) ? (values[0...20] + '...') : ("[" + values[0...20].join(',') + ", ... ]")
330
319
  else
331
320
  printable=values.inspect
332
321
  end
@@ -364,13 +353,13 @@ class EXIF_header
364
353
  entries = self.s2n(thumb_ifd, 2)
365
354
  # this is header plus offset to IFD ...
366
355
  if @endian == 'M'
367
- tiff = 'MM\x00*\x00\x00\x00\x08'
356
+ tiff = "MM#{X00}*" + [0x00,0x00,0x00,0x00,0x08].pack('C*')
368
357
  else
369
- tiff = 'II*\x00\x08\x00\x00\x00'
358
+ tiff = 'II*' + [0x00,0x08,0x00,0x00,0x00].pack('C*')
370
359
  end
371
360
  # ... plus thumbnail IFD data plus a null "next IFD" pointer
372
361
  self.file.seek(self.offset+thumb_ifd)
373
- tiff += self.file.read(entries*12+2)+'\x00\x00\x00\x00'
362
+ tiff += self.file.read(entries*12+2)+[0x00,0x00,0x00,0x00].pack('C*')
374
363
 
375
364
  # fix up large value offset pointers into data area
376
365
  (0...entries).each { |i|
@@ -1,7 +1,7 @@
1
1
  module Cul
2
2
  module Image
3
3
  module Properties
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cul_image_props
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-19 00:00:00.000000000 Z
12
+ date: 2012-06-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri