escpos-image 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c49046aa71525a428ae442b1480c1ef75f6a44ae
4
- data.tar.gz: 27b728ca12793e860e82f3f1c3b0b0cfc2615ec5
2
+ SHA256:
3
+ metadata.gz: 3093ebac2fdbbf59507fc5c4a209f85941a90d03c0f0838a626b43401df38672
4
+ data.tar.gz: 9e52328a87653d53b3d4359010feccae312c93ef10ecbbc6d41db0944c52469d
5
5
  SHA512:
6
- metadata.gz: e6b1a90b4ed5b85ccf72cbc65a57951c6e152fba1695d91b03ce1b08ca3d90bf07c1a1c8cfb67a2f6662b627200b1e84d7902cf9f02aa0082662a7b237f0f6dc
7
- data.tar.gz: 16879f05a163e494e820dedeebf004a3227366d0676d96dd0cb4e82a8390cc53207cb3d867080470a7dad5769c72851ca077822437d1c7a73c6034b91eebcc0e
6
+ metadata.gz: ef20ab54bffe996cb3ed65bcd5d6eff1c7a4cc581c63ccdcae982766e3616d8e6f13a02645f0921747923fe91971f399da5c15f9a164b34df44f7e877a284274
7
+ data.tar.gz: 18cfe1a217a0910f5644b198e5c32a4eeaf04f9d94e8a1a132bdb1af82f9124e7bc2d3c66c91610008e2b4f715b232848efa265acb4113b821705a2f58602b1d
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,22 @@
1
+ image: ruby:2.5
2
+
3
+ cache:
4
+ paths:
5
+ - vendor/ruby
6
+
7
+ stages:
8
+ - test
9
+
10
+ before_script:
11
+ - ruby -v
12
+ - bundle -v
13
+ - bundle install --jobs $(nproc) --path vendor
14
+ - apt-get install -y imagemagick
15
+ - gem install mini_magick
16
+
17
+ test:
18
+ stage: test
19
+ script:
20
+ - rake test
21
+ environment:
22
+ name: test
data/Rakefile CHANGED
@@ -1,2 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
- task :default => :spec
2
+ require "rake/testtask"
3
+
4
+ task default: :test
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
data/escpos-image.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'escpos/image'
@@ -23,7 +22,7 @@ Gem::Specification.new do |spec|
23
22
  spec.add_development_dependency "bundler"
24
23
  spec.add_development_dependency "rake"
25
24
 
26
- spec.add_development_dependency "minitest", "~> 5.4.2"
25
+ spec.add_development_dependency "minitest", "~> 5.4"
27
26
 
28
27
  spec.add_dependency "escpos"
29
28
  spec.add_dependency "chunky_png"
data/lib/escpos/image.rb CHANGED
@@ -1,15 +1,21 @@
1
1
  module Escpos
2
2
  class Image
3
3
 
4
- VERSION = "0.0.3"
5
-
6
- def initialize(image_path, opts = {})
7
- if opts.fetch(:convert_to_monochrome, false)
8
- require_mini_magick!
9
- image = convert_to_monochrome(image_path, opts)
10
- @image = ChunkyPNG::Image.from_file(image.path)
4
+ VERSION = "0.0.4"
5
+
6
+ def initialize(image_or_path, opts = {})
7
+ if image_or_path.is_a?(ChunkyPNG::Image)
8
+ @image = image_or_path
9
+ elsif image_or_path.is_a?(String)
10
+ if opts.fetch(:convert_to_monochrome, false)
11
+ require_mini_magick!
12
+ image = convert_to_monochrome(image_or_path, opts)
13
+ @image = ChunkyPNG::Image.from_file(image.path)
14
+ else
15
+ @image = ChunkyPNG::Image.from_file(image_or_path)
16
+ end
11
17
  else
12
- @image = ChunkyPNG::Image.from_file(image_path)
18
+ raise ArgumentError.new("Image must be a path or a ChunkyPNG::Image object.")
13
19
  end
14
20
 
15
21
  unless @image.width % 8 == 0 && @image.height % 8 == 0
@@ -25,17 +31,14 @@ module Escpos
25
31
 
26
32
  0.upto(@image.height - 1) do |y|
27
33
  0.upto(@image.width - 1) do |x|
28
- r, g, b, a =
29
- ChunkyPNG::Color.r(@image[x, y]),
30
- ChunkyPNG::Color.g(@image[x, y]),
31
- ChunkyPNG::Color.b(@image[x, y]),
32
- ChunkyPNG::Color.a(@image[x, y])
33
- px = (r + g + b) / 3
34
+ px = ChunkyPNG::Color.to_grayscale(@image.get_pixel(x, y))
35
+ r, g, b =
36
+ ChunkyPNG::Color.r(px),
37
+ ChunkyPNG::Color.g(px),
38
+ ChunkyPNG::Color.b(px)
39
+ px = (r + b + g) / 3
34
40
  # Alpha is flattened with convert_to_monochrome option
35
- unless a == 255
36
- raise ArgumentError.new("PNG images with alpha are not supported. Use \"convert_to_monochrome\" to flatten it.")
37
- end
38
- value = px > 128 ? 255 : 0
41
+ value = px >= 128 ? 255 : 0
39
42
  value = (value << 8) | value
40
43
  temp |= mask if value == 0
41
44
  mask = mask >> 1
@@ -71,7 +74,7 @@ module Escpos
71
74
  begin
72
75
  require 'mini_magick'
73
76
  rescue LoadError => e
74
- raise 'Required options need the mini_magick gem installed.'
77
+ raise "Required options need the mini_magick gem installed: #{e}."
75
78
  end
76
79
  end
77
80
  end
@@ -1,6 +1,6 @@
1
1
  require_relative '../../test_helper'
2
2
 
3
- class TestPrinter < Minitest::Test
3
+ class ImageTest < Minitest::Test
4
4
  def setup
5
5
  @printer = Escpos::Printer.new
6
6
  end
@@ -13,7 +13,7 @@ class TestPrinter < Minitest::Test
13
13
  @printer.write "\n" * 10
14
14
  @printer.cut!
15
15
  image.chunky_png_image.save(File.join(__dir__, "../../results/#{__method__}.png"))
16
- assert_equal @printer.to_base64, 'G0AddjAAEACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAB//////gAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAP//////4AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAAP//////8AAAAAAAAAAAAAD///////AAAAAAAAAAAAAA////D//wAAAAAAAAAAAAAP///Af/8AAAAAAAAAAAAAH4P/gB//AAAAAAAAAAAAAB8B/wAf/wAAAAAAAAAAAAAfAP8AD/8AAAAAAAAAAAAAHgD+AA//AAAAAAAAAAAAAB4AfgwH/4AAAAAAAAAAAAAeEHweB/+AAAAAAAAAAAAAHjh8Hwf/gAAAAAAAAAAAAA58fD8H/4AAAAAAAAAAAAAOfHw/B/+AAAAAAAAAAAAADnx+Pwf/gAAAAAAAAAAAAA5/w/8H/4AAAAAAAAAAAAAOPgB/B/+AAAAAAAAAAAAADjwAHw//gAAAAAAAAAAAAA8YAAcP/4AAAAAAAAAAAAAPsAAB//+AAAAAAAAAAAAAD8AAAD//gAAAAAAAAAAAAA+AAAAP/4AAAAAAAAAAAAAPAAAAB/+AAAAAAAAAAAAADgAAAAf/gAAAAAAAAAAAAAwAAADH/4AAAAAAAAAAAAAMwAADh/+AAAAAAAAAAAAAHmAABgf/gAAAAAAAAAAAAB4wABgP/4AAAAAAAAAAAAAfDABgH//AAAAAAAAAAAAAH4cBgDP/wAAAAAAAAAAAAB/g/gDD/+AAAAAAAAAAAAA/MAADA//gAAAAAAAAAAAAPwgADAH/8AAAAAAAAAAAAD8EADAB//AAAAAAAAAAAAB/AwBgAf/4AAAAAAAAAAAAfwDDgAD/+AAAAAAAAAAAAP4AAAAA//wAAAAAAAAAAAD+AAAAAP/+AAAAAAAAAAAB/gAAAAB//gAAAAAAAAAAAf4AAAAAf/8AAAAAAAAAAAP8AAAAAH//gAAAAAAAAAAH/AAAAAA//8AAAAAAAAAAD/wAAAAAP//gAAAAAAAAAA/4AAAAAB//4AAAAAAAAAAf+AAAAAAf//AAAAAAAAAAP/gAAAAAH//4AAAAAAAAAH/wAAAAAA///AAAAAAAAAD/8AAAAAAP//4AAAAAAAAA//AAAAAAB//+AAAAAAAAAf/gAAAAAAff/wAAAAAAAAP/4AAAAAAH7/+AAAAAAAAD/8AAAAAAA/f/gAAAAAAAB//AAAAAAAP7/8AAAAAAAA/vgAAAAAAB/f/gAAAAAAAP34AAAAAAAfz/4AAAAAAAH98AAAAAAAD+//AAAAAAAB+/AAAAAAAA/3/wAAAAAAA/vwAAAAAAAH8/+AAAAAAAP34AAAAAAAB/v/gAAAAAAH9+AAAAAAAAP5/8AAAAAAD+/AAAAAAAAD+f/AAAAAAA/vwAAAAAAAAfz/4AAAAAAfz4AAAAAAAAH8/+AAAAAAH9+AAAAAAAAA/P/wAAAAAB+fAAAAAAAAAP5/8AAAAAA/nwAAAAAAAAD+f/AAAAAAP78AAAAAAAAAfn/4AAAAAH8+AAAAAAAAAH5/+AAAAAB/PgAAAAAAAAB+f/gAAAAAfz4AAAAAAAAAPj/4AAAAAP88AAAAAAAAAD4//AAAAAD/PAAAAAAAAAA+P/wAAAAA/jwAAAAAAAAAHj/8AAAAAP48AAAAAAAAABx//AAAAAH+PAAAAAAAAAAMf/wAAAAB/zgAAAAAAAAAAH/8AAAAAf8YAAAAAAAAAAA//AAAAAH/GAAAAAAAAAA8D/wAAAAB/wgAAAAAAAAA54P8AAAAAf+IAAAAAAAAAIDx/AAAAAH/gAAAAAAAAAGAOPwAAAAB/8AAAAAAAAABAB58AAAAAf/AAAAAAAAAAwAPPAAAAAH/4AAAAAAAAAcADzwAAAAB//AAAAAAAAAfAAc4AAAAA4H4AAAAAAAAGYAPuAAAAAcAfAAAAAAAADGAD/gAAAAGAD8AAAAAAAAxgB/8AAAADAA/gAAAAAAAYMB+DwAAABgAH+AAAAAAAGDx/AMAAAA4AA/wAAAAAABgf/gBgAAAcAAH/AAAAAAAwD/gAYAAAeAAB/4AAAAAAMAfgADAAA+AAAP/AAAAAADAAAAAwAA+AAAD/4AAAAAAwAAAAMAAcAAAAf/AAAAAAMAAAABAAOAAAAH/4AAAAADAAAAAYADAAAAA/+AAAAAAwAAAAGABgAAAAP/wAAAAAMAAAABgAYAAAAB/8AAAAAGAAAAAMAGAAAAAf/gAAAABgAAAADABgAAAAD/4AAAAAYAAAAAYAYAAAAA/+AAAAAGAAAAADAGAAAAAH/gAAAABgAAAAA4BgAAAAA/wAAAAAYAAAAAGAYAAAAAH4AAAAAGAAAAAAwDAAAAAB4AAAAADgAAAAAMAwAAAAAOAAAAAAwAAAAABgMAAAAABgAAAAAMAAAAAAYDAAAAAAMAAAAADAAAAAAGBgAAAAABgAAAABgAAAAADgYAAAAAAcAAAAA4AAAAAAwGAAAAAADAAAAA+AAAAAA4BgAAAAAAcAAAA/gAAAAAcAwAAAAAAHwAAA/wAAAAAcAMAAAAAAA/AAB/8AAAAAcADAAAAAAAP/AH//AAAAAcAAwAAAAAAD/////wAAAAcAAOAAAAAAAf////8AAAAeAABgAAAAAAH////+AAAAOAAAMAAAAAAB/////gAAAGAAAB8AAAAAA/////4AAADAAAAH/wAAAAP/gAf/AAABgAAAAH/4AAAD4AAAAwAAAwAAAAAAfgAABgAAAAMAAAYAAAAAAAfAAA4AAAABgAAMAAAAAAAB8AAcAAAAAcAAOAAAAAAAAH4AeAAAAADAAHAAAAAAAAAP/+AAAAAAcAHgAAAAAAAAAf+AAAAAADwPgAAAAAAAAAAAAAAAAAAf/gAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAACgoKCgoKCgoKCh1WAA=='
16
+ assert_equal @printer.to_base64, 'G0AddjAAEACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAB//////gAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAP//////4AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAAP//////8AAAAAAAAAAAAAD///////AAAAAAAAAAAAAA////D//wAAAAAAAAAAAAAP///AP/8AAAAAAAAAAAAAH4P/gB//AAAAAAAAAAAAAB8B/wAf/wAAAAAAAAAAAAAfAP8AD/8AAAAAAAAAAAAAHgD+AA//AAAAAAAAAAAAAB4AfgwH/4AAAAAAAAAAAAAeEHweB/+AAAAAAAAAAAAAHjh8Hwf/gAAAAAAAAAAAAA48fD8H/4AAAAAAAAAAAAAOfHw/B/+AAAAAAAAAAAAADnx+Pwf/gAAAAAAAAAAAAA5/w/8H/4AAAAAAAAAAAAAOPgB/B/+AAAAAAAAAAAAADjwAHw//gAAAAAAAAAAAAA8YAAcP/4AAAAAAAAAAAAAPsAAB//+AAAAAAAAAAAAAD8AAAD//gAAAAAAAAAAAAA+AAAAP/4AAAAAAAAAAAAAPAAAAB/+AAAAAAAAAAAAADgAAAAf/gAAAAAAAAAAAAAwAAADH/4AAAAAAAAAAAAAMwAADh/+AAAAAAAAAAAAAHmAABgf/gAAAAAAAAAAAAB4wABgP/4AAAAAAAAAAAAAfDABgH//AAAAAAAAAAAAAH4cBgDP/wAAAAAAAAAAAAB/g/gDD/+AAAAAAAAAAAAA/MAADA//gAAAAAAAAAAAAPwgADAH/8AAAAAAAAAAAAD8EADAB//AAAAAAAAAAAAB/AwBgAf/4AAAAAAAAAAAAfwDDgAD/+AAAAAAAAAAAAP4AAAAA//wAAAAAAAAAAAD+AAAAAP/+AAAAAAAAAAAB/gAAAAB//gAAAAAAAAAAAf4AAAAAf/8AAAAAAAAAAAP8AAAAAH//gAAAAAAAAAAH/AAAAAA//8AAAAAAAAAAD/wAAAAAP//gAAAAAAAAAA/4AAAAAB//4AAAAAAAAAAf+AAAAAAf//AAAAAAAAAAP/gAAAAAH//4AAAAAAAAAH/wAAAAAA///AAAAAAAAAD/8AAAAAAP//4AAAAAAAAA//AAAAAAB//+AAAAAAAAAf/gAAAAAAff/wAAAAAAAAP/4AAAAAAH7/+AAAAAAAAD/8AAAAAAA/f/gAAAAAAAB//AAAAAAAP7/8AAAAAAAA/vgAAAAAAB/f/gAAAAAAAP34AAAAAAAfz/4AAAAAAAH98AAAAAAAD+//AAAAAAAB+/AAAAAAAA/3/wAAAAAAA/vwAAAAAAAH8/+AAAAAAAP34AAAAAAAB/v/gAAAAAAH9+AAAAAAAAP5/8AAAAAAD+/AAAAAAAAD+f/AAAAAAA/vwAAAAAAAAfz/4AAAAAAfz4AAAAAAAAH8/+AAAAAAH9+AAAAAAAAA/P/wAAAAAB+fAAAAAAAAAP5/8AAAAAA/nwAAAAAAAAD+f/AAAAAAP78AAAAAAAAAfn/4AAAAAH8+AAAAAAAAAH5/+AAAAAB/PgAAAAAAAAB+f/gAAAAAfz4AAAAAAAAAPj/4AAAAAP88AAAAAAAAAD4//AAAAAD/PAAAAAAAAAA+P/wAAAAA/jwAAAAAAAAAHj/8AAAAAP48AAAAAAAAABw//AAAAAH+PAAAAAAAAAAMf/wAAAAB/zgAAAAAAAAAAH/8AAAAAf8YAAAAAAAAAAA//AAAAAH/GAAAAAAAAAA8D/wAAAAB/wgAAAAAAAAA54P8AAAAAf+IAAAAAAAAAIDx/AAAAAH/gAAAAAAAAAGAOPwAAAAB/8AAAAAAAAABAB58AAAAAf/AAAAAAAAAAwAPPAAAAAH/4AAAAAAAAAcADzwAAAAB//AAAAAAAAAfAAc4AAAAA4H4AAAAAAAAGYAPuAAAAAcAfAAAAAAAADGAD/gAAAAGAD8AAAAAAAAxgB/8AAAADAA/gAAAAAAAYMB+DwAAABgAH+AAAAAAAGDx/AMAAAA4AA/wAAAAAABgf/gBgAAAcAAH/AAAAAAAwD/gAYAAAeAAB/4AAAAAAMAfgADAAA+AAAP/AAAAAADAAAAAwAA+AAAD/4AAAAAAwAAAAMAAcAAAAf/AAAAAAMAAAABAAOAAAAH/4AAAAADAAAAAYADAAAAA/+AAAAAAwAAAAGABgAAAAP/wAAAAAIAAAABgAYAAAAB/8AAAAAGAAAAAMAGAAAAAf/gAAAABgAAAADABgAAAAD/4AAAAAYAAAAAYAYAAAAA/+AAAAAGAAAAADAGAAAAAH/gAAAABgAAAAA4BgAAAAA/wAAAAAYAAAAAGAYAAAAAH4AAAAAGAAAAAAwDAAAAAB4AAAAADgAAAAAMAwAAAAAOAAAAAAwAAAAABgMAAAAABgAAAAAMAAAAAAYDAAAAAAMAAAAADAAAAAAGBgAAAAABgAAAABgAAAAADgYAAAAAAcAAAAA4AAAAAAwGAAAAAADAAAAA+AAAAAA4BgAAAAAAcAAAA/gAAAAAcAwAAAAAAHwAAA/wAAAAAcAMAAAAAAA/AAB/8AAAAAcADAAAAAAAP/AH//AAAAAcAAwAAAAAAD/////wAAAAcAAOAAAAAAAf////8AAAAcAABgAAAAAAH////+AAAAOAAAMAAAAAAB/////gAAAGAAAB8AAAAAA/////4AAADAAAAH/wAAAAP/gAf/AAABgAAAAH/4AAAD4AAAAwAAAwAAAAAAfgAABgAAAAMAAAYAAAAAAAeAAA4AAAABgAAMAAAAAAAB8AAcAAAAAcAAOAAAAAAAAH4AeAAAAADAAHAAAAAAAAAP/+AAAAAAcAHgAAAAAAAAAf+AAAAAADwPgAAAAAAAAAAAAAAAAAAf/gAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAACgoKCgoKCgoKCh1WAA=='
17
17
  end
18
18
 
19
19
  def test_image_conversion
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: escpos-image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Svoboda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-17 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.4.2
47
+ version: '5.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.4.2
54
+ version: '5.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: escpos
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +90,7 @@ extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
92
  - ".gitignore"
93
+ - ".gitlab-ci.yml"
93
94
  - Gemfile
94
95
  - README.md
95
96
  - Rakefile
@@ -124,8 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
125
  - !ruby/object:Gem::Version
125
126
  version: '0'
126
127
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.6.8
128
+ rubygems_version: 3.0.2
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: A ruby implementation of ESC/POS (thermal) printer image command specification.