class Arquivo::C118jpg
permite processar documentos em imagens JPG
Attributes
@return [String] base do documento
@return [String] extensao do documento
@return [String] nome do documento
@return [String] id do documento ft/rc/ex/sc <numero>
@return [Hash] opcoes parametrizar JPG
@return [Integer] tamanho do documento
Public Class Methods
@param [String] jpg JPG c118 @param [Hash] opt parametrizar JPG @option opt [Numeric] :fuzz (29) trim jpg N-1, escolhe menor ->
scanned pdf
@option opt [Numeric] :quality (15) compress jpg N% -> scanned pdf
(less=low quality)
@return [C118jpg] JPG c118
# File lib/arquivo/jpg.rb, line 40 def initialize(jpg, opt) @file = jpg @ext = File.extname(jpg).downcase @base = File.basename(jpg, File.extname(jpg)) @id = @base[/\w+/] @size = File.size(jpg) @opcoes = opt end
Public Instance Methods
@return [C118jpg] jpg com melhor aparo
# File lib/arquivo/jpg.rb, line 58 def apara system cmd_apara(opcoes[:fuzz], '') melhor_aparo end
@return [String] comando para aparar imagem
# File lib/arquivo/jpg.rb, line 72 def cmd_apara(fuzz, cmd) return cmd[1..-1] unless fuzz >= 1 cmd += ";convert \"#{file}\" -fuzz #{fuzz}% -trim +repage " \ "#{oqualidade} tmp/#{id}-#{fuzz}.jpg #{O2}" cmd_apara(fuzz - 4, cmd) end
@return (see apara
)
# File lib/arquivo/jpg.rb, line 64 def melhor_aparo m = Dir.glob("tmp/#{id}-*.jpg") .map { |s| [s, File.size(s)] } .min_by { |_, v| v.between?(LT, size) ? v : size } m[1] < size ? C118jpg.new(m[0], opcoes) : self end
@return [String] opcoes centrar jpg em canvas A4
# File lib/arquivo/jpg.rb, line 95 def oa4 # image dimensions in pixels. x, y = FastImage.size(file) # use the higher density to prevent exceeding fit density = [x / X4 * FB, y / Y4 * FB].max # canvas is an A4 page with the calculated density '-units PixelsPerInch -gravity center ' \ "-extent #{X4 * density}x#{Y4 * density}" end
@return [String] opcoes comprimir jpg
# File lib/arquivo/jpg.rb, line 90 def oqualidade "-quality #{opcoes[:quality]}% -compress jpeg" end
@return [C118pdf] pdf com jpg processada dentro
# File lib/arquivo/jpg.rb, line 82 def pdf system "convert \"#{file}\" #{oa4} #{oqualidade} " \ "-format pdf tmp/#{id}-trimed.pdf #{O2}" C118pdf.new("tmp/#{id}-trimed.pdf", opcoes) end
@!group processamento apara jpg e converte em pdf para arquivo
@param dad (see C118pdf#processa_pdf
)
# File lib/arquivo/jpg.rb, line 53 def processa_jpg(dad) apara.pdf.final(dad[id]).marca end