apply fixes, mainly to whitespace ( patch by @patkan in #128 )
This commit is contained in:
parent
44c79eaf11
commit
a0d8689141
|
@ -49,7 +49,7 @@ class Escpos(object):
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def image(self, img_source, high_density_vertical = True, high_density_horizontal = True, impl = "bitImageRaster"):
|
def image(self, img_source, high_density_vertical=True, high_density_horizontal=True, impl="bitImageRaster"):
|
||||||
""" Print an image
|
""" Print an image
|
||||||
|
|
||||||
:param img_source: PIL image or filename to load: `jpg`, `gif`, `png` or `bmp`
|
:param img_source: PIL image or filename to load: `jpg`, `gif`, `png` or `bmp`
|
||||||
|
@ -78,12 +78,11 @@ class Escpos(object):
|
||||||
if impl == "bitImageColumn":
|
if impl == "bitImageColumn":
|
||||||
# ESC *, column format bit image
|
# ESC *, column format bit image
|
||||||
density_byte = (1 if high_density_horizontal else 0) + (32 if high_density_vertical else 0)
|
density_byte = (1 if high_density_horizontal else 0) + (32 if high_density_vertical else 0)
|
||||||
header = ESC + b"*" + six.int2byte(density_byte) + self._int_low_high( im.width, 2 )
|
header = ESC + b"*" + six.int2byte(density_byte) + self._int_low_high(im.width, 2)
|
||||||
outp = []
|
outp = [ESC + b"3" + six.int2byte(16)] # Adjust line-feed size
|
||||||
outp.append(ESC + b"3" + six.int2byte(16)) # Adjust line-feed size
|
|
||||||
for blob in im.to_column_format(high_density_vertical):
|
for blob in im.to_column_format(high_density_vertical):
|
||||||
outp.append(header + blob + b"\n")
|
outp.append(header + blob + b"\n")
|
||||||
outp.append(ESC + b"2"); # Reset line-feed size
|
outp.append(ESC + b"2") # Reset line-feed size
|
||||||
self._raw(b''.join(outp))
|
self._raw(b''.join(outp))
|
||||||
|
|
||||||
def _image_send_graphics_data(self, m, fn, data):
|
def _image_send_graphics_data(self, m, fn, data):
|
||||||
|
@ -136,7 +135,7 @@ class Escpos(object):
|
||||||
self.image(im)
|
self.image(im)
|
||||||
return
|
return
|
||||||
# Native 2D code printing
|
# Native 2D code printing
|
||||||
cn = b'1' # Code type for QR code
|
cn = b'1' # Code type for QR code
|
||||||
# Select model: 1, 2 or micro.
|
# Select model: 1, 2 or micro.
|
||||||
self._send_2d_code_data(six.int2byte(65), cn, six.int2byte(48 + model) + six.int2byte(0))
|
self._send_2d_code_data(six.int2byte(65), cn, six.int2byte(48 + model) + six.int2byte(0))
|
||||||
# Set dot size.
|
# Set dot size.
|
||||||
|
|
|
@ -10,6 +10,7 @@ This module contains the image format handler :py:class:`EscposImage`.
|
||||||
|
|
||||||
from PIL import Image, ImageOps
|
from PIL import Image, ImageOps
|
||||||
|
|
||||||
|
|
||||||
class EscposImage(object):
|
class EscposImage(object):
|
||||||
"""
|
"""
|
||||||
Load images in, and output ESC/POS formats.
|
Load images in, and output ESC/POS formats.
|
||||||
|
@ -64,7 +65,7 @@ class EscposImage(object):
|
||||||
_, height_pixels = self._im.size
|
_, height_pixels = self._im.size
|
||||||
return height_pixels
|
return height_pixels
|
||||||
|
|
||||||
def to_column_format(self, high_density_vertical = True):
|
def to_column_format(self, high_density_vertical=True):
|
||||||
"""
|
"""
|
||||||
Extract slices of an image as equal-sized blobs of column-format data.
|
Extract slices of an image as equal-sized blobs of column-format data.
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,15 @@
|
||||||
:license: GNU GPL v3
|
:license: GNU GPL v3
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
|
from __future__ import division
|
||||||
|
from __future__ import print_function
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import escpos.printer as printer
|
import escpos.printer as printer
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
|
|
||||||
# Raster format print
|
# Raster format print
|
||||||
def test_bit_image_black():
|
def test_bit_image_black():
|
||||||
"""
|
"""
|
||||||
|
@ -24,6 +30,7 @@ def test_bit_image_black():
|
||||||
instance.image(im, impl="bitImageRaster")
|
instance.image(im, impl="bitImageRaster")
|
||||||
assert(instance.output == b'\x1dv0\x00\x01\x00\x01\x00\x80')
|
assert(instance.output == b'\x1dv0\x00\x01\x00\x01\x00\x80')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_white():
|
def test_bit_image_white():
|
||||||
"""
|
"""
|
||||||
Test printing solid white bit image (raster)
|
Test printing solid white bit image (raster)
|
||||||
|
@ -32,6 +39,7 @@ def test_bit_image_white():
|
||||||
instance.image('test/resources/canvas_white.png', impl="bitImageRaster")
|
instance.image('test/resources/canvas_white.png', impl="bitImageRaster")
|
||||||
assert(instance.output == b'\x1dv0\x00\x01\x00\x01\x00\x00')
|
assert(instance.output == b'\x1dv0\x00\x01\x00\x01\x00\x00')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_both():
|
def test_bit_image_both():
|
||||||
"""
|
"""
|
||||||
Test printing black/white bit image (raster)
|
Test printing black/white bit image (raster)
|
||||||
|
@ -40,6 +48,7 @@ def test_bit_image_both():
|
||||||
instance.image('test/resources/black_white.png', impl="bitImageRaster")
|
instance.image('test/resources/black_white.png', impl="bitImageRaster")
|
||||||
assert(instance.output == b'\x1dv0\x00\x01\x00\x02\x00\xc0\x00')
|
assert(instance.output == b'\x1dv0\x00\x01\x00\x02\x00\xc0\x00')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_transparent():
|
def test_bit_image_transparent():
|
||||||
"""
|
"""
|
||||||
Test printing black/transparent bit image (raster)
|
Test printing black/transparent bit image (raster)
|
||||||
|
@ -48,6 +57,7 @@ def test_bit_image_transparent():
|
||||||
instance.image('test/resources/black_transparent.png', impl="bitImageRaster")
|
instance.image('test/resources/black_transparent.png', impl="bitImageRaster")
|
||||||
assert(instance.output == b'\x1dv0\x00\x01\x00\x02\x00\xc0\x00')
|
assert(instance.output == b'\x1dv0\x00\x01\x00\x02\x00\xc0\x00')
|
||||||
|
|
||||||
|
|
||||||
# Column format print
|
# Column format print
|
||||||
def test_bit_image_colfmt_black():
|
def test_bit_image_colfmt_black():
|
||||||
"""
|
"""
|
||||||
|
@ -57,6 +67,7 @@ def test_bit_image_colfmt_black():
|
||||||
instance.image('test/resources/canvas_black.png', impl="bitImageColumn")
|
instance.image('test/resources/canvas_black.png', impl="bitImageColumn")
|
||||||
assert(instance.output == b'\x1b3\x10\x1b*!\x01\x00\x80\x00\x00\x0a\x1b2')
|
assert(instance.output == b'\x1b3\x10\x1b*!\x01\x00\x80\x00\x00\x0a\x1b2')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_colfmt_white():
|
def test_bit_image_colfmt_white():
|
||||||
"""
|
"""
|
||||||
Test printing solid white bit image (column format)
|
Test printing solid white bit image (column format)
|
||||||
|
@ -65,6 +76,7 @@ def test_bit_image_colfmt_white():
|
||||||
instance.image('test/resources/canvas_white.png', impl="bitImageColumn")
|
instance.image('test/resources/canvas_white.png', impl="bitImageColumn")
|
||||||
assert(instance.output == b'\x1b3\x10\x1b*!\x01\x00\x00\x00\x00\x0a\x1b2')
|
assert(instance.output == b'\x1b3\x10\x1b*!\x01\x00\x00\x00\x00\x0a\x1b2')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_colfmt_both():
|
def test_bit_image_colfmt_both():
|
||||||
"""
|
"""
|
||||||
Test printing black/white bit image (column format)
|
Test printing black/white bit image (column format)
|
||||||
|
@ -73,6 +85,7 @@ def test_bit_image_colfmt_both():
|
||||||
instance.image('test/resources/black_white.png', impl="bitImageColumn")
|
instance.image('test/resources/black_white.png', impl="bitImageColumn")
|
||||||
assert(instance.output == b'\x1b3\x10\x1b*!\x02\x00\x80\x00\x00\x80\x00\x00\x0a\x1b2')
|
assert(instance.output == b'\x1b3\x10\x1b*!\x02\x00\x80\x00\x00\x80\x00\x00\x0a\x1b2')
|
||||||
|
|
||||||
|
|
||||||
def test_bit_image_colfmt_transparent():
|
def test_bit_image_colfmt_transparent():
|
||||||
"""
|
"""
|
||||||
Test printing black/transparent bit image (column format)
|
Test printing black/transparent bit image (column format)
|
||||||
|
@ -81,6 +94,7 @@ def test_bit_image_colfmt_transparent():
|
||||||
instance.image('test/resources/black_transparent.png', impl="bitImageColumn")
|
instance.image('test/resources/black_transparent.png', impl="bitImageColumn")
|
||||||
assert(instance.output == b'\x1b3\x10\x1b*!\x02\x00\x80\x00\x00\x80\x00\x00\x0a\x1b2')
|
assert(instance.output == b'\x1b3\x10\x1b*!\x02\x00\x80\x00\x00\x80\x00\x00\x0a\x1b2')
|
||||||
|
|
||||||
|
|
||||||
# Graphics print
|
# Graphics print
|
||||||
def test_graphics_black():
|
def test_graphics_black():
|
||||||
"""
|
"""
|
||||||
|
@ -90,6 +104,7 @@ def test_graphics_black():
|
||||||
instance.image('test/resources/canvas_black.png', impl="graphics")
|
instance.image('test/resources/canvas_black.png', impl="graphics")
|
||||||
assert(instance.output == b'\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x80\x1d(L\x02\x0002')
|
assert(instance.output == b'\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x80\x1d(L\x02\x0002')
|
||||||
|
|
||||||
|
|
||||||
def test_graphics_white():
|
def test_graphics_white():
|
||||||
"""
|
"""
|
||||||
Test printing solid white graphics
|
Test printing solid white graphics
|
||||||
|
@ -98,6 +113,7 @@ def test_graphics_white():
|
||||||
instance.image('test/resources/canvas_white.png', impl="graphics")
|
instance.image('test/resources/canvas_white.png', impl="graphics")
|
||||||
assert(instance.output == b'\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x00\x1d(L\x02\x0002')
|
assert(instance.output == b'\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x00\x1d(L\x02\x0002')
|
||||||
|
|
||||||
|
|
||||||
def test_graphics_both():
|
def test_graphics_both():
|
||||||
"""
|
"""
|
||||||
Test printing black/white graphics
|
Test printing black/white graphics
|
||||||
|
@ -106,6 +122,7 @@ def test_graphics_both():
|
||||||
instance.image('test/resources/black_white.png', impl="graphics")
|
instance.image('test/resources/black_white.png', impl="graphics")
|
||||||
assert(instance.output == b'\x1d(L\x0c\x000p0\x01\x011\x02\x00\x02\x00\xc0\x00\x1d(L\x02\x0002')
|
assert(instance.output == b'\x1d(L\x0c\x000p0\x01\x011\x02\x00\x02\x00\xc0\x00\x1d(L\x02\x0002')
|
||||||
|
|
||||||
|
|
||||||
def test_graphics_transparent():
|
def test_graphics_transparent():
|
||||||
"""
|
"""
|
||||||
Test printing black/transparent graphics
|
Test printing black/transparent graphics
|
||||||
|
|
|
@ -16,6 +16,7 @@ from nose.tools import raises
|
||||||
import escpos.printer as printer
|
import escpos.printer as printer
|
||||||
from escpos.constants import QR_ECLEVEL_H, QR_MODEL_1
|
from escpos.constants import QR_ECLEVEL_H, QR_MODEL_1
|
||||||
|
|
||||||
|
|
||||||
def test_defaults():
|
def test_defaults():
|
||||||
"""Test QR code with defaults"""
|
"""Test QR code with defaults"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
|
@ -24,12 +25,14 @@ def test_defaults():
|
||||||
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
||||||
assert(instance.output == expected)
|
assert(instance.output == expected)
|
||||||
|
|
||||||
|
|
||||||
def test_empty():
|
def test_empty():
|
||||||
"""Test QR printing blank code"""
|
"""Test QR printing blank code"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
instance.qr("", native=True)
|
instance.qr("", native=True)
|
||||||
assert(instance.output == b'')
|
assert(instance.output == b'')
|
||||||
|
|
||||||
|
|
||||||
def test_ec():
|
def test_ec():
|
||||||
"""Test QR error correction setting"""
|
"""Test QR error correction setting"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
|
@ -38,6 +41,7 @@ def test_ec():
|
||||||
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
||||||
assert(instance.output == expected)
|
assert(instance.output == expected)
|
||||||
|
|
||||||
|
|
||||||
def test_size():
|
def test_size():
|
||||||
"""Test QR box size"""
|
"""Test QR box size"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
|
@ -46,6 +50,7 @@ def test_size():
|
||||||
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
||||||
assert(instance.output == expected)
|
assert(instance.output == expected)
|
||||||
|
|
||||||
|
|
||||||
def test_model():
|
def test_model():
|
||||||
"""Test QR model"""
|
"""Test QR model"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
|
@ -54,24 +59,28 @@ def test_model():
|
||||||
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
b'(k\x07\x001P01234\x1d(k\x03\x001Q0'
|
||||||
assert(instance.output == expected)
|
assert(instance.output == expected)
|
||||||
|
|
||||||
|
|
||||||
@raises(ValueError)
|
@raises(ValueError)
|
||||||
def test_invalid_ec():
|
def test_invalid_ec():
|
||||||
"""Test invalid QR error correction"""
|
"""Test invalid QR error correction"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
instance.qr("1234", native=True, ec=-1)
|
instance.qr("1234", native=True, ec=-1)
|
||||||
|
|
||||||
|
|
||||||
@raises(ValueError)
|
@raises(ValueError)
|
||||||
def test_invalid_size():
|
def test_invalid_size():
|
||||||
"""Test invalid QR size"""
|
"""Test invalid QR size"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
instance.qr("1234", native=True, size=0)
|
instance.qr("1234", native=True, size=0)
|
||||||
|
|
||||||
|
|
||||||
@raises(ValueError)
|
@raises(ValueError)
|
||||||
def test_invalid_model():
|
def test_invalid_model():
|
||||||
"""Test invalid QR model"""
|
"""Test invalid QR model"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
instance.qr("1234", native=True, model="Hello")
|
instance.qr("1234", native=True, model="Hello")
|
||||||
|
|
||||||
|
|
||||||
def test_image():
|
def test_image():
|
||||||
"""Test QR as image"""
|
"""Test QR as image"""
|
||||||
instance = printer.Dummy()
|
instance = printer.Dummy()
|
||||||
|
@ -82,6 +91,7 @@ def test_image():
|
||||||
b'i(\x7f<\xa8A \xd8]\'\xc4]y\xf8]E\x80Ar\x94\x7fR@\x00\x00\x00'
|
b'i(\x7f<\xa8A \xd8]\'\xc4]y\xf8]E\x80Ar\x94\x7fR@\x00\x00\x00'
|
||||||
assert(instance.output == expected)
|
assert(instance.output == expected)
|
||||||
|
|
||||||
|
|
||||||
@raises(ValueError)
|
@raises(ValueError)
|
||||||
def test_image_invalid_model():
|
def test_image_invalid_model():
|
||||||
"""Test unsupported QR model as image"""
|
"""Test unsupported QR model as image"""
|
||||||
|
|
|
@ -10,6 +10,7 @@ converted to ESC/POS column & raster formats.
|
||||||
|
|
||||||
from escpos.image import EscposImage
|
from escpos.image import EscposImage
|
||||||
|
|
||||||
|
|
||||||
def test_image_black():
|
def test_image_black():
|
||||||
"""
|
"""
|
||||||
Test rendering solid black image
|
Test rendering solid black image
|
||||||
|
@ -17,6 +18,7 @@ def test_image_black():
|
||||||
for img_format in ['png', 'jpg', 'gif']:
|
for img_format in ['png', 'jpg', 'gif']:
|
||||||
_load_and_check_img('canvas_black.' + img_format, 1, 1, b'\x80', [b'\x80'])
|
_load_and_check_img('canvas_black.' + img_format, 1, 1, b'\x80', [b'\x80'])
|
||||||
|
|
||||||
|
|
||||||
def test_image_black_transparent():
|
def test_image_black_transparent():
|
||||||
"""
|
"""
|
||||||
Test rendering black/transparent image
|
Test rendering black/transparent image
|
||||||
|
@ -24,6 +26,7 @@ def test_image_black_transparent():
|
||||||
for img_format in ['png', 'gif']:
|
for img_format in ['png', 'gif']:
|
||||||
_load_and_check_img('black_transparent.' + img_format, 2, 2, b'\xc0\x00', [b'\x80\x80'])
|
_load_and_check_img('black_transparent.' + img_format, 2, 2, b'\xc0\x00', [b'\x80\x80'])
|
||||||
|
|
||||||
|
|
||||||
def test_image_black_white():
|
def test_image_black_white():
|
||||||
"""
|
"""
|
||||||
Test rendering black/white image
|
Test rendering black/white image
|
||||||
|
@ -31,6 +34,7 @@ def test_image_black_white():
|
||||||
for img_format in ['png', 'jpg', 'gif']:
|
for img_format in ['png', 'jpg', 'gif']:
|
||||||
_load_and_check_img('black_white.' + img_format, 2, 2, b'\xc0\x00', [b'\x80\x80'])
|
_load_and_check_img('black_white.' + img_format, 2, 2, b'\xc0\x00', [b'\x80\x80'])
|
||||||
|
|
||||||
|
|
||||||
def test_image_white():
|
def test_image_white():
|
||||||
"""
|
"""
|
||||||
Test rendering solid white image
|
Test rendering solid white image
|
||||||
|
@ -38,11 +42,12 @@ def test_image_white():
|
||||||
for img_format in ['png', 'jpg', 'gif']:
|
for img_format in ['png', 'jpg', 'gif']:
|
||||||
_load_and_check_img('canvas_white.' + img_format, 1, 1, b'\x00', [b'\x00'])
|
_load_and_check_img('canvas_white.' + img_format, 1, 1, b'\x00', [b'\x00'])
|
||||||
|
|
||||||
|
|
||||||
def _load_and_check_img(filename, width_expected, height_expected, raster_format_expected, column_format_expected):
|
def _load_and_check_img(filename, width_expected, height_expected, raster_format_expected, column_format_expected):
|
||||||
"""
|
"""
|
||||||
Load an image, and test whether raster & column formatted output, sizes, etc match expectations.
|
Load an image, and test whether raster & column formatted output, sizes, etc match expectations.
|
||||||
"""
|
"""
|
||||||
im = EscposImage('test/resources/' + filename)
|
im = EscposImage('test/resources/' + filename)
|
||||||
assert(im.width == width_expected)
|
assert(im.width == width_expected)
|
||||||
assert(im.height == height_expected)
|
assert(im.height == height_expected)
|
||||||
assert(im.to_raster_format() == raster_format_expected)
|
assert(im.to_raster_format() == raster_format_expected)
|
||||||
|
|
Loading…
Reference in New Issue