69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
import { makeImageCode } from "./printerutil.js"
|
||
|
||
const formatTime = date => {
|
||
const year = date.getFullYear()
|
||
const month = date.getMonth() + 1
|
||
const day = date.getDate()
|
||
const hour = date.getHours()
|
||
const minute = date.getMinutes()
|
||
const second = date.getSeconds()
|
||
|
||
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
|
||
}
|
||
|
||
const formatNumber = n => {
|
||
n = n.toString()
|
||
return n[1] ? n : '0' + n
|
||
}
|
||
|
||
|
||
//4合1
|
||
function convert4to1(res) {
|
||
let arr = [];
|
||
for (let i = 0; i < res.length; i++) {
|
||
if (i % 4 == 0) {
|
||
let rule = 0.29900 * res[i] + 0.58700 * res[i + 1] + 0.11400 * res[i + 2];
|
||
if (rule > 200) {
|
||
res[i] = 0;
|
||
} else {
|
||
res[i] = 1;
|
||
}
|
||
arr.push(res[i]);
|
||
}
|
||
}
|
||
return arr;
|
||
}
|
||
|
||
//8合1
|
||
function convert8to1(arr) {
|
||
let data = [];
|
||
for (let k = 0; k < arr.length; k += 8) {
|
||
let temp = arr[k] * 128 + arr[k + 1] * 64 + arr[k + 2] * 32 + arr[k + 3] * 16 + arr[k + 4] * 8 + arr[k + 5] * 4 +
|
||
arr[k + 6] * 2 + arr[k + 7] * 1
|
||
data.push(temp);
|
||
}
|
||
return data;
|
||
}
|
||
|
||
//我的图片宽度是240,那么拼接的指令就是[29, 118, 48, 0, 30, 0, 240, 0]
|
||
//我的图片宽度是160,那么拼接的指令就是[29, 118, 48, 0, 20, 0, 160, 0]
|
||
//补充一点,打印非二维码的图片,宽度一定要是24的倍数,不然打印也会出现乱码
|
||
function toArrayBuffer(res, width) {
|
||
let arr = convert4to1(res.data);
|
||
let data = convert8to1(arr);
|
||
let cmds = [].concat(...makeImageCode(data, width));
|
||
return new Uint8Array(cmds).buffer;
|
||
}
|
||
|
||
function zip_image(res) {
|
||
let arr = convert4to1(res.data);
|
||
let data = convert8to1(arr);
|
||
return data;
|
||
}
|
||
|
||
export {
|
||
formatTime,
|
||
toArrayBuffer,
|
||
zip_image,
|
||
}
|