examples/extract_images.rb in pdf-reader-1.1.1 vs examples/extract_images.rb in pdf-reader-1.2.0
- old
+ new
@@ -84,18 +84,19 @@
tag_count = 10
header = [ 73, 73, 42, 8, tag_count ].pack("ccsIs")
tiff = header.dup
tiff << short_tag.call( 256, 1, w ) # image width
tiff << short_tag.call( 257, 1, h ) # image height
- tiff << long_tag.call( 258, 4, (header.size + (tag_count*12))) # bits per pixel
+ tiff << long_tag.call( 258, 4, (header.size + (tag_count*12) + 4)) # bits per pixel
tiff << short_tag.call( 259, 1, 1 ) # compression
tiff << short_tag.call( 262, 1, 5 ) # colorspace - separation
- tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 16) ) # data offset
+ tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 20) ) # data offset
tiff << short_tag.call( 277, 1, 4 ) # samples per pixel
tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size
tiff << short_tag.call( 284, 1, 1 ) # planer config
tiff << long_tag.call( 332, 1, 1) # inkset - CMYK
+ tiff << [0].pack("I") # next IFD pointer
tiff << [bpc, bpc, bpc, bpc].pack("IIII")
tiff << stream.unfiltered_data
File.open(filename, "wb") { |file| file.write tiff }
end
@@ -117,14 +118,16 @@
tiff << short_tag.call( 256, 1, w ) # image width
tiff << short_tag.call( 257, 1, h ) # image height
tiff << short_tag.call( 258, 1, 8 ) # bits per pixel
tiff << short_tag.call( 259, 1, 1 ) # compression
tiff << short_tag.call( 262, 1, 1 ) # colorspace - grayscale
- tiff << long_tag.call( 273, 1, (10 + (tag_count*12)) ) # data offset
+ tiff << long_tag.call( 273, 1, (10 + (tag_count*12) + 4) ) # data offset
tiff << short_tag.call( 277, 1, 1 ) # samples per pixel
tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size
tiff << short_tag.call( 284, 1, 1 ) # planer config
+ tiff << [0].pack("I") # next IFD pointer
+ p stream.unfiltered_data.size
tiff << stream.unfiltered_data
File.open(filename, "wb") { |file| file.write tiff }
end
def save_rgb(filename)
@@ -142,16 +145,17 @@
tag_count = 8
header = [ 73, 73, 42, 8, tag_count ].pack("ccsIs")
tiff = header.dup
tiff << short_tag.call( 256, 1, w ) # image width
tiff << short_tag.call( 257, 1, h ) # image height
- tiff << long_tag.call( 258, 3, (header.size + (tag_count*12))) # bits per pixel
+ tiff << long_tag.call( 258, 3, (header.size + (tag_count*12) + 4)) # bits per pixel
tiff << short_tag.call( 259, 1, 1 ) # compression
tiff << short_tag.call( 262, 1, 2 ) # colorspace - RGB
- tiff << long_tag.call( 273, 1, (header.size + (tag_count*12) + 12) ) # data offset
+ tiff << long_tag.call( 273, 1, (header.size + (tag_count*12) + 16) ) # data offset
tiff << short_tag.call( 277, 1, 3 ) # samples per pixel
tiff << long_tag.call( 279, 1, stream.unfiltered_data.size) # data byte size
+ tiff << [0].pack("I") # next IFD pointer
tiff << [bpc, bpc, bpc].pack("III")
tiff << stream.unfiltered_data
File.open(filename, "wb") { |file| file.write tiff }
end
end
@@ -207,11 +211,12 @@
# the compression type; 273 is the offset of the image data.
tiff = [ 73, 73, 42, 8, 5 ].pack("ccsIs") \
+ short_tag.call( 256, cols ) \
+ short_tag.call( 257, h ) \
+ short_tag.call( 259, 4 ) \
- + long_tag.call( 273, (10 + (5*12)) ) \
+ + long_tag.call( 273, (10 + (5*12) + 4) ) \
+ long_tag.call( 279, len) \
+ + [0].pack("I") \
+ stream.data
File.open(filename, "wb") { |file| file.write tiff }
end
end
end