Class: Arquivo::C118jpg
- Inherits:
-
String
- Object
- String
- Arquivo::C118jpg
- Defined in:
- lib/arquivo/jpg.rb
Overview
permite processar documentos em imagens JPG
Instance Attribute Summary collapse
-
#base ⇒ String
readonly
Base do documento.
-
#ext ⇒ String
readonly
Extensao do documento.
-
#file ⇒ String
readonly
Nome do documento.
-
#id ⇒ String
readonly
Id do documento ft/rc/ex/sc <numero>.
-
#opcoes ⇒ Hash
readonly
Opcoes parametrizar JPG.
-
#size ⇒ Integer
readonly
Tamanho do documento.
processamento collapse
-
#apara ⇒ C118jpg
Jpg com melhor aparo.
-
#cmd_apara(fuzz, cmd) ⇒ String
Comando para aparar imagem.
-
#melhor_aparo ⇒ C118jpg
Jpg com melhor aparo.
-
#oa4 ⇒ String
Opcoes centrar jpg em canvas A4.
-
#oqualidade ⇒ String
Opcoes comprimir jpg.
-
#pdf ⇒ C118pdf
Pdf com jpg processada dentro.
-
#processa_jpg(dad) ⇒ Object
apara jpg e converte em pdf para arquivo.
Instance Method Summary collapse
-
#initialize(jpg, opt) ⇒ C118jpg
constructor
JPG c118.
Constructor Details
#initialize(jpg, opt) ⇒ C118jpg
Returns JPG c118.
40 41 42 43 44 45 46 47 |
# 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 |
Instance Attribute Details
#base ⇒ String (readonly)
Returns base do documento.
25 26 27 |
# File 'lib/arquivo/jpg.rb', line 25 def base @base end |
#ext ⇒ String (readonly)
Returns extensao do documento.
23 24 25 |
# File 'lib/arquivo/jpg.rb', line 23 def ext @ext end |
#file ⇒ String (readonly)
Returns nome do documento.
21 22 23 |
# File 'lib/arquivo/jpg.rb', line 21 def file @file end |
#id ⇒ String (readonly)
Returns id do documento ft/rc/ex/sc <numero>.
31 32 33 |
# File 'lib/arquivo/jpg.rb', line 31 def id @id end |
#opcoes ⇒ Hash (readonly)
Returns opcoes parametrizar JPG.
29 30 31 |
# File 'lib/arquivo/jpg.rb', line 29 def opcoes @opcoes end |
#size ⇒ Integer (readonly)
Returns tamanho do documento.
27 28 29 |
# File 'lib/arquivo/jpg.rb', line 27 def size @size end |
Instance Method Details
#apara ⇒ C118jpg
Returns jpg com melhor aparo.
58 59 60 61 |
# File 'lib/arquivo/jpg.rb', line 58 def apara system cmd_apara(opcoes[:fuzz], '') melhor_aparo end |
#cmd_apara(fuzz, cmd) ⇒ String
Returns comando para aparar imagem.
72 73 74 75 76 77 78 79 |
# 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 |
#melhor_aparo ⇒ C118jpg
Returns jpg com melhor aparo.
64 65 66 67 68 69 |
# 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 |
#oa4 ⇒ String
Returns opcoes centrar jpg em canvas A4.
95 96 97 98 99 100 101 102 103 104 105 |
# 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 |
#oqualidade ⇒ String
Returns opcoes comprimir jpg.
90 91 92 |
# File 'lib/arquivo/jpg.rb', line 90 def oqualidade "-quality #{opcoes[:quality]}% -compress jpeg" end |
#pdf ⇒ C118pdf
Returns pdf com jpg processada dentro.
82 83 84 85 86 87 |
# 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 |
#processa_jpg(dad) ⇒ Object
apara jpg e converte em pdf para arquivo
53 54 55 |
# File 'lib/arquivo/jpg.rb', line 53 def processa_jpg(dad) apara.pdf.final(dad[id]).marca end |