from escpos.printer import Usb from PIL import Image, ImageEnhance VENDOR_ID = 0x0416 PRODUCT_ID = 0x5011 # Initialize printer p = Usb(VENDOR_ID, PRODUCT_ID, interface=0, in_ep=0x81, out_ep=0x03) # Load and convert image PRINTER_WIDTH = 384 # Set to your printer's pixel width (common: 384 or 576) PRINTER_WIDTH = 384 # Adjust to your printer img = Image.open('robbie.jpg') # Resize first wpercent = (PRINTER_WIDTH / float(img.size[0])) hsize = int((float(img.size[1]) * float(wpercent))) img = img.resize((PRINTER_WIDTH, hsize), Image.LANCZOS) # Optional: Enhance contrast img = ImageEnhance.Contrast(img).enhance(2.0) # Optional: Sharpen # img = ImageEnhance.Sharpness(img).enhance(2.0) # Convert with dithering img = img.convert('1', dither=Image.FLOYDSTEINBERG) # Print image p.image(img) p.cut()