libis-format 0.9.20 → 0.9.21
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.
- checksums.yaml +4 -4
- data/lib/libis/format/config.rb +1 -0
- data/lib/libis/format/converter/image_converter.rb +12 -11
- data/lib/libis/format/converter/jp2_converter.rb +111 -0
- data/lib/libis/format/version.rb +1 -1
- data/spec/converter_spec.rb +10 -3
- data/spec/data/test-options.jpg +0 -0
- data/spec/data/test.jpg +0 -0
- data/spec/data/test.png +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca0fa2347db2ac8e525a5f4d9a2e0dd5b6041c3e
|
4
|
+
data.tar.gz: 4e35f07c555c7535acfd7529fd5cbd5d66d93013
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d3885c3601936d75e4acd3c229ed4157dd44b759632f8b65ea46edc180189d57892f0f0f42050170e269ae0386e9e6cdb0870071a684355d27160b174166be0
|
7
|
+
data.tar.gz: d92986e11cb2d1e4b35f60781d81d4a6a1bc5c7aba1b950abfc9e01f3b862891e4d57c1a5e758681c40fbe98b548980a0825df42471b9061f801c4d4f61951bf
|
data/lib/libis/format/config.rb
CHANGED
@@ -59,8 +59,12 @@ module Libis
|
|
59
59
|
@options[:colorspace] = value
|
60
60
|
end
|
61
61
|
|
62
|
+
def delete_date
|
63
|
+
@delete_date = true
|
64
|
+
end
|
65
|
+
|
62
66
|
def profile(icc)
|
63
|
-
@
|
67
|
+
@profile = icc
|
64
68
|
end
|
65
69
|
|
66
70
|
# Create or use a watermark image.
|
@@ -186,12 +190,6 @@ module Libis
|
|
186
190
|
convert.resize("#{image.width / @wm_size}x#{image.height / @wm_size}").write('mpr:watermark').delete.+
|
187
191
|
end
|
188
192
|
|
189
|
-
conversions = {}
|
190
|
-
icc_options = {}
|
191
|
-
@options.each do |o, v|
|
192
|
-
([:colorspace, :profile].include?(o) ? icc_options : conversions)[o] = v
|
193
|
-
end
|
194
|
-
|
195
193
|
convert << source
|
196
194
|
convert.flatten if format == :JPG
|
197
195
|
if @wm_image
|
@@ -206,13 +204,16 @@ module Libis
|
|
206
204
|
end
|
207
205
|
|
208
206
|
@flags.each { |f, v| v.is_a?(FalseClass) ? convert.send(f).+ : convert.send(f) }
|
207
|
+
if @delete_date
|
208
|
+
convert << '+set' << 'modify-date' << '+set' << 'create-date'
|
209
|
+
end
|
209
210
|
|
210
|
-
unless
|
211
|
+
unless @options.empty?
|
211
212
|
convert.colorspace('RGB')
|
212
|
-
|
213
|
-
convert.colorspace('sRGB')
|
213
|
+
@options.each { |o, v| convert.send(o, v) }
|
214
|
+
convert.colorspace('sRGB') unless @options[:colorspace]
|
214
215
|
end
|
215
|
-
|
216
|
+
convert.profile @profile if @profile
|
216
217
|
|
217
218
|
convert.format(format)
|
218
219
|
convert << target
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require 'libis/format/identifier'
|
5
|
+
|
6
|
+
require 'mini_magick'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
MiniMagick.logger.level = ::Logger::ERROR
|
10
|
+
|
11
|
+
module Libis
|
12
|
+
module Format
|
13
|
+
module Converter
|
14
|
+
|
15
|
+
class Jp2Converter < Libis::Format::Converter::Base
|
16
|
+
|
17
|
+
def self.input_types(format = nil)
|
18
|
+
[:TIFF, :JPG, :PNG, :BMP, :GIF, :PDF]
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.output_types(_ = nil)
|
22
|
+
[:JP2]
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
super
|
27
|
+
@options = {
|
28
|
+
color_xform: false,
|
29
|
+
error_resilience: :ALL,
|
30
|
+
lossless: true,
|
31
|
+
progression_order: 'RLCP',
|
32
|
+
tile_size: [1024, 1024],
|
33
|
+
codeblock_size: [6, 6],
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
def j2kdriver(_)
|
38
|
+
#force usage of this converter
|
39
|
+
end
|
40
|
+
|
41
|
+
def color_xform(flag = true)
|
42
|
+
@options[:color_xform] = flag
|
43
|
+
end
|
44
|
+
|
45
|
+
def error_resilience(value = :ALL)
|
46
|
+
@options[:error_resilience] = value
|
47
|
+
end
|
48
|
+
|
49
|
+
def lossless(value = true)
|
50
|
+
@options[:lossless] = value
|
51
|
+
end
|
52
|
+
|
53
|
+
def progression_order(value = 'RLCP')
|
54
|
+
@options[:progression_order] = value
|
55
|
+
end
|
56
|
+
|
57
|
+
def tile_size(width = 1024, height = 1024)
|
58
|
+
@options[:tile_size] = [width, height]
|
59
|
+
end
|
60
|
+
|
61
|
+
def codeblock_size(height = 6, width = 6)
|
62
|
+
@options[:codeblock_size] = [height, width]
|
63
|
+
end
|
64
|
+
|
65
|
+
def convert(source, target, format, opts = {})
|
66
|
+
super
|
67
|
+
|
68
|
+
FileUtils.mkpath(File.dirname(target))
|
69
|
+
|
70
|
+
options = []
|
71
|
+
|
72
|
+
@options.each do |key, value|
|
73
|
+
case key
|
74
|
+
when :color_xform
|
75
|
+
options << '--set-output-j2k-color-xform' << value ? 'YES' : 'NO'
|
76
|
+
when :error_resilience
|
77
|
+
options << '--set-output-j2k-error-resilience' << value.to_s
|
78
|
+
when :lossless
|
79
|
+
if value
|
80
|
+
options << '--set-output-j2k-xform' << 'R53' << '5' << '--set-output-j2k-ratio' << '0'
|
81
|
+
else
|
82
|
+
options << '--set-output-j2k-xform' << 'I97' << '--set-output-j2k-psnr' << '46'
|
83
|
+
end
|
84
|
+
when :progression_order
|
85
|
+
options << '--set-output-j2k-progression-order' << value.to_s
|
86
|
+
when :tile_size
|
87
|
+
options << '--set-output-j2k-tile-size' << value[0].to_s << value[1].to_s
|
88
|
+
when :codeblock_size
|
89
|
+
options << '--set-output-j2k-codeblock-size' << value[0].to_s << value[1].to_s
|
90
|
+
else
|
91
|
+
#do nothing
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
Libis::Tools::Command.run(
|
97
|
+
Libis::Format::Config[:j2kdriver],
|
98
|
+
'--input-file-name', source,
|
99
|
+
'--output-file-name', target,
|
100
|
+
'--set-output-type', 'JP2',
|
101
|
+
*options
|
102
|
+
)
|
103
|
+
|
104
|
+
target
|
105
|
+
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
data/lib/libis/format/version.rb
CHANGED
data/spec/converter_spec.rb
CHANGED
@@ -83,9 +83,11 @@ describe 'Converters' do
|
|
83
83
|
ref_file = File.join(file_dir, 'data', 'test.jpg')
|
84
84
|
tgt_file = File.join('', 'tmp', 'test.jpg')
|
85
85
|
FileUtils.mkdir_p File.dirname(tgt_file)
|
86
|
+
converter.delete_date
|
86
87
|
result = converter.convert(src_file, tgt_file, :JPG)
|
87
88
|
expect(result).to eq tgt_file
|
88
|
-
|
89
|
+
compare = MiniMagick::Tool::Compare.new { |cmp| cmp << '-metric' << 'mae' << ref_file << tgt_file << 'null:' }
|
90
|
+
expect(compare).to_not be_nil
|
89
91
|
FileUtils.rm tgt_file, force: true
|
90
92
|
end
|
91
93
|
|
@@ -94,9 +96,11 @@ describe 'Converters' do
|
|
94
96
|
ref_file = File.join(file_dir, 'data', 'test.png')
|
95
97
|
tgt_file = File.join('', 'tmp', 'test.png')
|
96
98
|
FileUtils.mkdir_p File.dirname(tgt_file)
|
99
|
+
converter.delete_date
|
97
100
|
result = converter.convert(src_file, tgt_file, :PNG)
|
98
101
|
expect(result).to eq tgt_file
|
99
|
-
|
102
|
+
compare = MiniMagick::Tool::Compare.new { |cmp| cmp << '-metric' << 'mae' << ref_file << tgt_file << 'null:' }
|
103
|
+
expect(compare).to_not be_nil
|
100
104
|
FileUtils.rm tgt_file, force: true
|
101
105
|
end
|
102
106
|
|
@@ -105,6 +109,7 @@ describe 'Converters' do
|
|
105
109
|
ref_file = File.join(file_dir, 'data', 'test.pdf.tif')
|
106
110
|
tgt_file = File.join('', 'tmp', 'test.pdf.tif')
|
107
111
|
FileUtils.mkdir_p File.dirname(tgt_file)
|
112
|
+
converter.delete_date
|
108
113
|
result = converter.convert(src_file, tgt_file, :TIFF)
|
109
114
|
expect(result).to eq tgt_file
|
110
115
|
expect(tgt_file).to be_same_file_as ref_file
|
@@ -117,9 +122,11 @@ describe 'Converters' do
|
|
117
122
|
tgt_file = File.join('', 'tmp', 'test-options.jpg')
|
118
123
|
FileUtils.mkdir_p File.dirname(tgt_file)
|
119
124
|
converter.watermark(text: 'RSPEC', size: 5, opacity: 0.1, rotation: 15, gap: 0.5, composition: 'modulate')
|
125
|
+
converter.delete_date
|
120
126
|
result = converter.convert(src_file, tgt_file, :JPG, options: {scale: '150%', quality: '70%'})
|
121
127
|
expect(result).to eq tgt_file
|
122
|
-
|
128
|
+
compare = MiniMagick::Tool::Compare.new { |cmp| cmp << '-metric' << 'mae' << ref_file << tgt_file << 'null:' }
|
129
|
+
expect(compare).to_not be_nil
|
123
130
|
FileUtils.rm tgt_file, force: true
|
124
131
|
end
|
125
132
|
|
data/spec/data/test-options.jpg
CHANGED
Binary file
|
data/spec/data/test.jpg
CHANGED
Binary file
|
data/spec/data/test.png
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-format
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/libis/format/converter/base.rb
|
158
158
|
- lib/libis/format/converter/chain.rb
|
159
159
|
- lib/libis/format/converter/image_converter.rb
|
160
|
+
- lib/libis/format/converter/jp2_converter.rb
|
160
161
|
- lib/libis/format/converter/office_converter.rb
|
161
162
|
- lib/libis/format/converter/pdf_converter.rb
|
162
163
|
- lib/libis/format/converter/repository.rb
|