breaking out image processing
This commit is contained in:
parent
dbd73b1126
commit
247c12ad8e
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
.PHONY : test test-coverage
|
.PHONY : test test-coverage
|
||||||
|
|
||||||
test :
|
test :
|
||||||
testrb -b tests/*
|
testrb -b tests/*.rb
|
||||||
|
|
||||||
test-coverage :
|
test-coverage :
|
||||||
rcov -x '\/jruby\/lib\/' -x '\/tests\/data\/' tests/*.rb
|
rcov -x '\/jruby\/lib\/' -x '\/tests\/data\/' tests/*.rb
|
@ -45,41 +45,6 @@ class Filter
|
|||||||
recalc_pixels
|
recalc_pixels
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
|
||||||
# Build a temporary PNG from an SVG file
|
|
||||||
#
|
|
||||||
def inkscape(input, target)
|
|
||||||
params = []
|
|
||||||
|
|
||||||
width = @config['width']
|
|
||||||
height = @config['height']
|
|
||||||
inkscape_target = target
|
|
||||||
|
|
||||||
if @config['rotate']
|
|
||||||
case @config['rotate']
|
|
||||||
when 90, -90
|
|
||||||
t = width; width = height; height = t
|
|
||||||
inkscape_target = target + "-pre.png"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if width && (width.to_i != 0); params << "-w #{width} "; end
|
|
||||||
if height && (height.to_i != 0); params << "-h #{height} "; end
|
|
||||||
|
|
||||||
system("inkscape -e \"#{inkscape_target}\" -y 1.0 #{params.join(" ")} \"#{input}\"")
|
|
||||||
|
|
||||||
if @config['rotate']
|
|
||||||
command = [
|
|
||||||
"\"#{inkscape_target}\"",
|
|
||||||
"-rotate #{@config['rotate']}",
|
|
||||||
"\"#{target}\""
|
|
||||||
]
|
|
||||||
|
|
||||||
convert(command)
|
|
||||||
File.unlink(inkscape_target)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def convert(command, verbose = false)
|
def convert(command, verbose = false)
|
||||||
if verbose
|
if verbose
|
||||||
puts "convert " + (verbose ? "-verbose " : "" ) + [ command ].flatten.join(" ")
|
puts "convert " + (verbose ? "-verbose " : "" ) + [ command ].flatten.join(" ")
|
||||||
|
57
modules/ImageProcessing.rb
Normal file
57
modules/ImageProcessing.rb
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
module ImageProcessing
|
||||||
|
def setup_inkscape(target)
|
||||||
|
params = []
|
||||||
|
|
||||||
|
width = @config['width']
|
||||||
|
height = @config['height']
|
||||||
|
inkscape_target = target
|
||||||
|
|
||||||
|
if @config['rotate']
|
||||||
|
case @config['rotate']
|
||||||
|
when 90, -90
|
||||||
|
t = width; width = height; height = t
|
||||||
|
inkscape_target = target + "-pre.png"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if width && (width.to_i != 0)
|
||||||
|
params << "-w #{width}"
|
||||||
|
end
|
||||||
|
if height && (height.to_i != 0)
|
||||||
|
params << "-h #{height}"
|
||||||
|
end
|
||||||
|
|
||||||
|
[ params, inkscape_target ]
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Build a PNG from an SVG file
|
||||||
|
#
|
||||||
|
def inkscape(input, target)
|
||||||
|
params, inkscape_target = setup_inkscape(target)
|
||||||
|
|
||||||
|
call_system("inkscape -e \"#{inkscape_target}\" -y 1.0 #{params.join(" ")} \"#{input}\"")
|
||||||
|
|
||||||
|
if @config['rotate']
|
||||||
|
command = [
|
||||||
|
"\"#{inkscape_target}\"",
|
||||||
|
"-rotate #{@config['rotate']}",
|
||||||
|
"\"#{target}\""
|
||||||
|
]
|
||||||
|
|
||||||
|
convert(command)
|
||||||
|
File.unlink(inkscape_target)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def convert(command, verbose = false)
|
||||||
|
if verbose
|
||||||
|
puts "convert " + (verbose ? "-verbose " : "" ) + [ command ].flatten.join(" ")
|
||||||
|
end
|
||||||
|
call_system("convert " + (verbose ? "-verbose " : "" ) + [ command ].flatten.join(" "))
|
||||||
|
end
|
||||||
|
|
||||||
|
def call_system(command)
|
||||||
|
Kernel.system(command)
|
||||||
|
end
|
||||||
|
end
|
32
tests/test_image_processing.rb
Normal file
32
tests/test_image_processing.rb
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
require "test/unit"
|
||||||
|
require File.dirname(__FILE__) + '/../modules/ImageProcessing.rb'
|
||||||
|
|
||||||
|
class TestImageProcessing < Test::Unit::TestCase
|
||||||
|
def setup
|
||||||
|
@instance = Class.new do
|
||||||
|
include ImageProcessing
|
||||||
|
|
||||||
|
attr_accessor :config
|
||||||
|
end.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_setup_inkscape
|
||||||
|
[
|
||||||
|
[ {}, [], 'target' ],
|
||||||
|
[ { 'width' => 'test' }, [], 'target' ],
|
||||||
|
[ { 'width' => 200 }, ['-w 200'], 'target' ],
|
||||||
|
[ { 'height' => 'test' }, [], 'target' ],
|
||||||
|
[ { 'height' => 200 }, ['-h 200'], 'target' ],
|
||||||
|
[ { 'rotate' => 0 }, [], 'target' ],
|
||||||
|
[ { 'rotate' => 90 }, [], 'target-pre.png' ],
|
||||||
|
[ { 'rotate' => 90, 'width' => 50, 'height' => 75 }, ['-w 75', '-h 50'], 'target-pre.png' ],
|
||||||
|
].each do |config, expected_params, expected_target|
|
||||||
|
@instance.config = config
|
||||||
|
|
||||||
|
params, inkscape_target = @instance.setup_inkscape('target')
|
||||||
|
|
||||||
|
assert_equal expected_params, params
|
||||||
|
assert_equal inkscape_target, expected_target
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user