escpos-image 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|