UNPKG

ultimate-text-to-image

Version:

Generate UTF8 texts into image with auto line break for all international language, including Chinese, Japanese, Korean, etc..

91 lines (90 loc) 2.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseClass = void 0; const fs_1 = __importDefault(require("fs")); const utils_1 = require("./utils"); class BaseClass { constructor() { this.options = {}; this._renderedTime = 0; this._before = [0, 0]; } get hasRendered() { return !!this._canvas; } get canvas() { this._checkHasRendered(); return this._canvas; } get renderedTime() { this._checkHasRendered(); return this._renderedTime; } get width() { this._checkHasRendered(); return this.canvas.width; } get height() { this._checkHasRendered(); return this.canvas.height; } render() { return this; } toDataUrl(mineType = "image/png", options) { this._checkHasRendered(); if (mineType === "image/png") { return this.canvas.toDataURL("image/png"); } else { return this.canvas.toDataURL("image/jpeg", options === null || options === void 0 ? void 0 : options.quality); } } toBuffer(mineType = "image/png", options) { this._checkHasRendered(); if (mineType === "image/png") { return this.canvas.toBuffer("image/png", options); } else { return this.canvas.toBuffer("image/jpeg", options); } } toFile(filename, mineType = "", options) { this._checkHasRendered(); if (!mineType) { if (filename.match(/\.jpg$|\.jpeg$/i)) { mineType = "image/jpeg"; } else { mineType = "image/png"; } } const buffer = this.toBuffer(mineType, options); fs_1.default.writeFileSync(filename, buffer); } toStream(mineType = "image/png", options) { this._checkHasRendered(); if (mineType === "image/png") { return this.canvas.createPNGStream(options); } else { return this.canvas.createJPEGStream(options); } } _checkHasRendered() { if (!this.hasRendered) { throw new Error(`Please run render() first!`); } } _startTimer() { this._before = (0, utils_1.hrtime)(); } _endTimer() { const diff = (0, utils_1.hrtime)(this._before); this._renderedTime = diff[0] * 1000 + (diff[1] / 1000000); } } exports.BaseClass = BaseClass;