Mercurial > core / lisp/lib/dat/png.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
2596311106ae
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 ;;; dat/png.lisp --- PNG image format 8 ;;;; Copyright (c) 2011-2014 jnjcc, Yste.org. All rights reserved. 10 ;;;; png backend for QR code symbol 12 ;; (defun set-color (pngarray x y color) 13 ;; (setf (aref pngarray x y 0) color) 14 ;; (setf (aref pngarray x y 1) color) 15 ;; (setf (aref pngarray x y 2) color)) 17 ;; (defun symbol->png (symbol pixsize margin) 18 ;; "return the qr symbol written into a zpng:png object with PIXSIZE 19 ;; pixels for each module, and MARGIN pixels on all four sides" 20 ;; (with-slots (matrix modules) symbol 21 ;; (let* ((size (+ (* modules pixsize) (* margin 2))) 22 ;; (qrpng (make-instance 'zpng:png :width size :height size)) 23 ;; (qrarray (zpng:data-array qrpng))) 26 ;; (if (and (<= margin x (- size margin 1)) 27 ;; (<= margin y (- size margin 1))) 28 ;; (let ((i (floor (- x margin) pixsize)) 29 ;; (j (floor (- y margin) pixsize))) 30 ;; (if (dark-module-p matrix i j) 31 ;; (set-color qrarray x y 0) 32 ;; (set-color qrarray x y 255))) 34 ;; (set-color qrarray x y 255)))) 37 ;; (defun encode-png (text &key (fpath "qrcode.png") (version 1) (level :level-m) 38 ;; (mode nil) (pixsize 9) (margin 8)) 39 ;; (let ((symbol (encode-symbol text :version version :level level :mode mode))) 40 ;; (zpng:write-png (symbol->png symbol pixsize margin) fpath))) 42 ;; (defun encode-png-stream (text stream &key (version 1) (level :level-m) 43 ;; (mode nil) (pixsize 9) (margin 8)) 44 ;; (let ((symbol (encode-symbol text :version version :level level :mode mode))) 45 ;; (zpng:write-png-stream (symbol->png symbol pixsize margin) stream))) 47 ;; (defun encode-png-bytes (bytes &key (fpath "kanji.png") (version 1) 48 ;; (level :level-m) (mode nil) (pixsize 9) (margin 8)) 49 ;; (let ((symbol (encode-symbol-bytes bytes :version version :level level 51 ;; (zpng:write-png (symbol->png symbol pixsize margin) fpath))) 53 ;; (defun encode-png-bytes-stream (bytes stream &key (version 1) (level :level-m) 54 ;; (mode nil) (pixsize 9) (margin 8)) 55 ;; (let ((symbol (encode-symbol-bytes bytes :version version :level level 57 ;; (zpng:write-png-stream (symbol->png symbol pixsize margin) stream)))