escpos-image 0.0.2 → 0.0.3
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 +4 -4
- data/lib/escpos/image.rb +33 -7
- data/test/lib/escpos/image_test.rb +3 -3
- data/test/results/test_image.png +0 -0
- data/test/results/test_image_conversion.png +0 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c49046aa71525a428ae442b1480c1ef75f6a44ae
|
4
|
+
data.tar.gz: 27b728ca12793e860e82f3f1c3b0b0cfc2615ec5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6b1a90b4ed5b85ccf72cbc65a57951c6e152fba1695d91b03ce1b08ca3d90bf07c1a1c8cfb67a2f6662b627200b1e84d7902cf9f02aa0082662a7b237f0f6dc
|
7
|
+
data.tar.gz: 16879f05a163e494e820dedeebf004a3227366d0676d96dd0cb4e82a8390cc53207cb3d867080470a7dad5769c72851ca077822437d1c7a73c6034b91eebcc0e
|
data/lib/escpos/image.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Escpos
|
2
2
|
class Image
|
3
3
|
|
4
|
-
VERSION = "0.0.
|
4
|
+
VERSION = "0.0.3"
|
5
5
|
|
6
6
|
def initialize(image_path, opts = {})
|
7
7
|
if opts.fetch(:convert_to_monochrome, false)
|
@@ -31,7 +31,10 @@ module Escpos
|
|
31
31
|
ChunkyPNG::Color.b(@image[x, y]),
|
32
32
|
ChunkyPNG::Color.a(@image[x, y])
|
33
33
|
px = (r + g + b) / 3
|
34
|
-
|
34
|
+
# 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
|
35
38
|
value = px > 128 ? 255 : 0
|
36
39
|
value = (value << 8) | value
|
37
40
|
temp |= mask if value == 0
|
@@ -53,6 +56,10 @@ module Escpos
|
|
53
56
|
].join
|
54
57
|
end
|
55
58
|
|
59
|
+
def chunky_png_image
|
60
|
+
@image
|
61
|
+
end
|
62
|
+
|
56
63
|
private
|
57
64
|
|
58
65
|
# !!!
|
@@ -71,16 +78,35 @@ module Escpos
|
|
71
78
|
|
72
79
|
def convert_to_monochrome(image_path, opts = {})
|
73
80
|
image = MiniMagick::Image.open(image_path)
|
81
|
+
|
82
|
+
# Flatten transparency
|
74
83
|
image.flatten
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
84
|
+
|
85
|
+
# Get the first image out of animated gifs
|
86
|
+
image.collapse!
|
87
|
+
|
88
|
+
# Optimise more actions to single call
|
89
|
+
image.combine_options do |c|
|
90
|
+
c.rotate opts.fetch(:rotate) if opts.has_key?(:rotate)
|
91
|
+
c.resize opts.fetch(:resize) if opts.has_key?(:resize)
|
92
|
+
c.grayscale 'Rec709Luma'
|
93
|
+
if opts.fetch(:dither, true)
|
94
|
+
c.monochrome '+dither'
|
95
|
+
# dither the image with FloydSteinberg algoritm for better results
|
96
|
+
c.dither 'FloydSteinberg'
|
97
|
+
else
|
98
|
+
c.monochrome '+dither' # + operator disables dithering
|
99
|
+
end
|
80
100
|
end
|
101
|
+
|
102
|
+
# Limit the extent of the image to nice round numbers
|
81
103
|
if opts.fetch(:extent, true)
|
82
104
|
image.extent "#{(image.width/8.0).round*8}x#{(image.height/8.0).round*8}"
|
83
105
|
end
|
106
|
+
|
107
|
+
# Force PNG format so ChunkyPNG works
|
108
|
+
image.format 'png'
|
109
|
+
|
84
110
|
image
|
85
111
|
end
|
86
112
|
|
@@ -12,7 +12,7 @@ class TestPrinter < Minitest::Test
|
|
12
12
|
@printer.write image.to_escpos
|
13
13
|
@printer.write "\n" * 10
|
14
14
|
@printer.cut!
|
15
|
-
|
15
|
+
image.chunky_png_image.save(File.join(__dir__, "../../results/#{__method__}.png"))
|
16
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=='
|
17
17
|
end
|
18
18
|
|
@@ -23,8 +23,8 @@ class TestPrinter < Minitest::Test
|
|
23
23
|
@printer.write image.to_escpos
|
24
24
|
@printer.write "\n" * 10
|
25
25
|
@printer.cut!
|
26
|
-
|
27
|
-
assert_equal @printer.to_base64, '
|
26
|
+
image.chunky_png_image.save(File.join(__dir__, "../../results/#{__method__}.png"))
|
27
|
+
assert_equal @printer.to_base64, 'G0AddjAAEACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAF/+gAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAH////AAAAAAAAAAAAAAAAH////4AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf/////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAD//////4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH//////4AAAAAAAAAAAAAB///////AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP//////8AAAAAAAAAAAAAB///8H//AAAAAAAAAAAAAA/r/8A//wAAAAAAAAAAAAAHwf+AH/8AAAAAAAAAAAAAD4D/gA//gAAAAAAAAAAAAA8AfwAP/wAAAAAAAAAAAAAHAH8EB/+AAAAAAAAAAAAADwh+Hwf/AAAAAAAAAAAAAA4cPh8H/4AAAAAAAAAAAAAHPD4fg/+AAAAAAAAAAAAADj4+P4f/AAAAAAAAAAAAAAc+fz+H/4AAAAAAAAAAAAAPPvW/h/8AAAAAAAAAAAAABx8Afwf/gAAAAAAAAAAAAAeeAB8P/wAAAAAAAAAAAAAHnAAHj/+AAAAAAAAAAAAAB9AAAN//AAAAAAAAAAAAAAfgAAA//4AAAAAAAAAAAAAHwAAAD/8AAAAAAAAAAAAAB4AAAAf/gAAAAAAAAAAAAAcAAAAH/4AAAAAAAAAAAAAOQAAA4/+AAAAAAAAAAAAABmAAA4f/gAAAAAAAAAAAAA8wAAYH/4AAAAAAAAAAAAAPCAAYD//AAAAAAAAAAAAAD44AcBv/wAAAAAAAAAAAAA/ho8Az/8AAAAAAAAAAAAAf4PwBw//gAAAAAAAAAAAAH5wABwP/4AAAAAAAAAAAAB+EAAwB//AAAAAAAAAAAAA/gwAwAf/wAAAAAAAAAAAAP4GBwAH/+AAAAAAAAAAAAD8AfwAA//wAAAAAAAAAAAB/gAAAAP/8AAAAAAAAAAAA/wAAAAB//gAAAAAAAAAAAP8AAAAAf/8AAAAAAAAAAAH+AAAAAH//gAAAAAAAAAAD/gAAAAA//4AAAAAAAAAAA/4AAAAAP//AAAAAAAAAAAf+AAAAAD//4AAAAAAAAAAP/AAAAAAf//AAAAAAAAAAH/wAAAAAH//4AAAAAAAAAB/4AAAAAA//+AAAAAAAAAA/+AAAAAAP//wAAAAAAAAAf/gAAAAAD//+AAAAAAAAAP/wAAAAAAff/wAAAAAAAAD/8AAAAAAH7/8AAAAAAAAB/+AAAAAAA/f/gAAAAAAAA//gAAAAAAP7/8AAAAAAAAP34AAAAAAB/f/AAAAAAAAH78AAAAAAAf3/4AAAAAAAD+/AAAAAAAD+/+AAAAAAAA/fgAAAAAAA/3/wAAAAAAAf34AAAAAAAH9/+AAAAAAAH78AAAAAAAB/v/gAAAAAAD+/AAAAAAAAP7/8AAAAAAA/fgAAAAAAAD/f/AAAAAAAf34AAAAAAAAf3/wAAAAAAH78AAAAAAAAH8/+AAAAAAD+/AAAAAAAAB/f/gAAAAAA/vwAAAAAAAAP7/8AAAAAAf34AAAAAAAAD+//AAAAAAH8+AAAAAAAAAfn/wAAAAAD/fAAAAAAAAAH5/+AAAAAA/3wAAAAAAAAB+f/gAAAAAP58AAAAAAAAAPn/4AAAAAD+fAAAAAAAAAD5/+AAAAAB/ngAAAAAAAAA+f/wAAAAAf54AAAAAAAAAPH/4AAAAAH+eAAAAAAAAABx//AAAAAD/jgAAAAAAAAAE//wAAAAAf94AAAAAAAAAAH/8AAAAAP+MAAAAAAAAADQf/AAAAAD/zgAAAAAAAAD/j/wAAAAA/8QAAAAAAAAAw+P8AAAAAP/AAAAAAAAAAQD5+AAAAAD/4AAAAAAAAAGAPPwAAAAA//AAAAAAAAADAB54AAAAAP/wAAAAAAAABwAPeAAAAAD/+AAAAAAAAB8AD3gAAAAA4PwAAAAAAAAZgB94AAAAAcB/AAAAAAAAMYAf8AAAAAOAH4AAAAAAADGAP/wAAAAHAB/gAAAAAABgwH6+AAAABgAP8AAAAAAAYPH8BwAAAAwAB/gAAAAAAOB/8AMAAAA8AAP+AAAAAADAf+ABgAAA8AAD/wAAAAAAwB+AAYAAA+AAAf+AAAAAAMAAAAGAAA8AAAH/wAAAAADAAAAAwAAcAAAA/+AAAAAAwAAAAMAAOAAAAP/gAAAAAMAAAADAAHAAAAB/8AAAAAGAAAAAwABgAAAAf/gAAAAAwAAAAGAAYAAAAD/4AAAAAYAAAABgAGAAAAA//AAAAADAAAAAcABgAAAAH/wAAAABgAAAADgAYAAAAA/8AAAAAYAAAAAYAGAAAAAP/AAAAAGAAAAADABgAAAAB/gAAAABgAAAAA4AMAAAAAPwAAAAAYAAAAAGAGAAAAABwAAAAAMAAAAAAwAwAAAAAcAAAAADAAAAAAMAYAAAAADgAAAAAwAAAAADADAAAAAAYAAAAAcAAAAAAwBgAAAAADAAAAAOAAAAAAYAYAAAAAA4AAAAHgAAAAAOAOAAAAAAHAAAAH4AAAAAPABAAAAAAA8AAAH8AAAAAHgAwAAAAAAPwAAP/AAAAAPgAMAAAAAAB/wAf/wAAAAHgADAAAAAAAf////8AAAAPgAAwAAAAAAH/////AAAAHgAAGAAAAAAA/////gAAAHgAABwAAAAAAf////8AAADgAAAPgAAAAAH/////AAABwAAAA/+AAAAB/+pf/gAAA4AAAAC//AAAAfoAAK8AAAcAAAAAAH+AAAOAAAADAAAGAAAAAAAH4AAHAAAAAYAAHAAAAAAAAHgADgAAAAHAADgAAAAAAAA/ADwAAAAAwABwAAAAAAAAB/vwAAAAAHAB4AAAAAAAAAH/wAAAAAA8D4AAAAAAAAAABAAAAAAAH/4AAAAAAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKCgoKCgoKCh1WAA=='
|
28
28
|
end
|
29
29
|
|
30
30
|
end
|
Binary file
|
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.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Svoboda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,6 +102,8 @@ files:
|
|
102
102
|
- test/fixtures/tux_alpha.png
|
103
103
|
- test/fixtures/tux_mono.png
|
104
104
|
- test/lib/escpos/image_test.rb
|
105
|
+
- test/results/test_image.png
|
106
|
+
- test/results/test_image_conversion.png
|
105
107
|
- test/test_helper.rb
|
106
108
|
homepage: https://github.com/escpos/escpos-image
|
107
109
|
licenses:
|
@@ -123,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
125
|
version: '0'
|
124
126
|
requirements: []
|
125
127
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.6.
|
128
|
+
rubygems_version: 2.6.8
|
127
129
|
signing_key:
|
128
130
|
specification_version: 4
|
129
131
|
summary: A ruby implementation of ESC/POS (thermal) printer image command specification.
|
@@ -131,5 +133,6 @@ test_files:
|
|
131
133
|
- test/fixtures/tux_alpha.png
|
132
134
|
- test/fixtures/tux_mono.png
|
133
135
|
- test/lib/escpos/image_test.rb
|
136
|
+
- test/results/test_image.png
|
137
|
+
- test/results/test_image_conversion.png
|
134
138
|
- test/test_helper.rb
|
135
|
-
has_rdoc:
|