Add dither server

This commit is contained in:
David Eisinger
2024-02-01 23:42:50 -05:00
parent 0822998d6a
commit 0a7b98406a
3 changed files with 83 additions and 0 deletions

40
bin/dither/dither.rb Normal file
View 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