Add dither server
This commit is contained in:
40
bin/dither/dither.rb
Normal file
40
bin/dither/dither.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
require "sinatra"
|
||||
require "mini_magick"
|
||||
|
||||
MiniMagick.logger.level = Logger::DEBUG
|
||||
|
||||
ROOT = ENV["ROOT"]
|
||||
KEY = ENV["KEY"]
|
||||
|
||||
FileUtils.mkdir_p "tmp"
|
||||
|
||||
get "/*" do |path|
|
||||
filename = File.basename(path)
|
||||
geometry = params["geo"]
|
||||
|
||||
@decrypted = Tempfile.new(filename, "tmp")
|
||||
@dithered = Tempfile.new([filename, ".png"], "tmp")
|
||||
|
||||
%x(
|
||||
openssl \
|
||||
aes-256-cbc \
|
||||
-d \
|
||||
-in #{ROOT}/#{path}.enc \
|
||||
-out #{@decrypted.path} \
|
||||
-pass file:#{KEY} \
|
||||
-iter 1000000
|
||||
)
|
||||
|
||||
MiniMagick::Tool::Magick.new do |magick|
|
||||
magick << @decrypted.path
|
||||
magick.resize "#{geometry}^"
|
||||
magick.gravity "center"
|
||||
magick.extent geometry
|
||||
magick.ordered_dither "o8x8"
|
||||
magick.monochrome
|
||||
magick << @dithered.path
|
||||
end
|
||||
|
||||
content_type "image/png"
|
||||
File.open(@dithered.path)
|
||||
end
|
||||
Reference in New Issue
Block a user