Professional print-quality QR codes. DPI standards, size specifications, and premium output options.
Resolution refers to DPI (dots per inch), which measures print quality. Higher DPI = sharper, crisper printed codes.
| DPI Level | Use Case | Quality |
|---|---|---|
| 72 DPI | Screen display only | Low (pixelated) |
| 150 DPI | Basic printing | Fair |
| 300 DPI | Professional print | Excellent ✓ |
| 600 DPI | Premium print | Perfect |
| Size (inches) | Size (mm) | Pixels at 300 DPI |
|---|---|---|
| 1" | 25mm | 300 × 300 |
| 2" | 50mm | 600 × 600 |
| 3" | 75mm | 900 × 900 |
| 4" | 100mm | 1200 × 1200 |
import qrcode
from PIL import Image
def create_high_res_qr(data, filename, dpi=300, size_inches=2):
"""
Create high resolution QR code for print.
Args:
data: URL or text to encode
filename: Output filename
dpi: Dots per inch (300 is standard)
size_inches: Final print size in inches
"""
# Calculate pixels needed
pixels = int(size_inches * dpi)
# Generate QR
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=2,
)
qr.add_data(data)
qr.make(fit=True)
# Create image at high resolution
img = qr.make_image(fill_color='black', back_color='white').convert('RGB')
# Resize to exact print size
img = img.resize((pixels, pixels), Image.Resampling.LANCZOS)
# Save with DPI metadata
img.save(filename, dpi=(dpi, dpi))
print(f'High-res QR saved: {filename} ({size_inches}"×{size_inches}" at {dpi} DPI)')
# Usage
create_high_res_qr('https://example.com', 'qrcode_300dpi.png', dpi=300, size_inches=2)