Initial commit

This commit is contained in:
robert committed 2025-05-30 18:13:30 +08:00
commit e49726988c
5445 files changed
+1089914

No files matched your search

+27
View File
@@ -0,0 +1,27 @@
import { JimpClass } from "@jimp/types";
import z from "zod";
declare const QuantizeOptionsSchema: z.ZodObject<{
colors: z.ZodOptional<z.ZodNumber>;
colorDistanceFormula: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"cie94-textiles">, z.ZodLiteral<"cie94-graphic-arts">, z.ZodLiteral<"ciede2000">, z.ZodLiteral<"color-metric">, z.ZodLiteral<"euclidean">, z.ZodLiteral<"euclidean-bt709-noalpha">, z.ZodLiteral<"euclidean-bt709">, z.ZodLiteral<"manhattan">, z.ZodLiteral<"manhattan-bt709">, z.ZodLiteral<"manhattan-nommyde">, z.ZodLiteral<"pngquant">]>>;
paletteQuantization: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"neuquant">, z.ZodLiteral<"neuquant-float">, z.ZodLiteral<"rgbquant">, z.ZodLiteral<"wuquant">]>>;
imageQuantization: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"nearest">, z.ZodLiteral<"riemersma">, z.ZodLiteral<"floyd-steinberg">, z.ZodLiteral<"false-floyd-steinberg">, z.ZodLiteral<"stucki">, z.ZodLiteral<"atkinson">, z.ZodLiteral<"jarvis">, z.ZodLiteral<"burkes">, z.ZodLiteral<"sierra">, z.ZodLiteral<"two-sierra">, z.ZodLiteral<"sierra-lite">]>>;
}, "strip", z.ZodTypeAny, {
colors?: number | undefined;
colorDistanceFormula?: "cie94-textiles" | "cie94-graphic-arts" | "ciede2000" | "color-metric" | "euclidean" | "euclidean-bt709-noalpha" | "euclidean-bt709" | "manhattan" | "manhattan-bt709" | "manhattan-nommyde" | "pngquant" | undefined;
paletteQuantization?: "neuquant" | "neuquant-float" | "rgbquant" | "wuquant" | undefined;
imageQuantization?: "nearest" | "riemersma" | "floyd-steinberg" | "false-floyd-steinberg" | "stucki" | "atkinson" | "jarvis" | "burkes" | "sierra" | "two-sierra" | "sierra-lite" | undefined;
}, {
colors?: number | undefined;
colorDistanceFormula?: "cie94-textiles" | "cie94-graphic-arts" | "ciede2000" | "color-metric" | "euclidean" | "euclidean-bt709-noalpha" | "euclidean-bt709" | "manhattan" | "manhattan-bt709" | "manhattan-nommyde" | "pngquant" | undefined;
paletteQuantization?: "neuquant" | "neuquant-float" | "rgbquant" | "wuquant" | undefined;
imageQuantization?: "nearest" | "riemersma" | "floyd-steinberg" | "false-floyd-steinberg" | "stucki" | "atkinson" | "jarvis" | "burkes" | "sierra" | "two-sierra" | "sierra-lite" | undefined;
}>;
export type QuantizeOptions = z.infer<typeof QuantizeOptionsSchema>;
export declare const methods: {
/**
* Image color number reduction.
*/
quantize<I extends JimpClass>(image: I, options: QuantizeOptions): I;
};
export {};
//# sourceMappingURL=index.d.ts.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAwCzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,OAAO;IAClB;;OAEG;aACM,CAAC,SAAS,SAAS,SAAS,CAAC,WAAW,eAAe;CA4BjE,CAAC"}
+70
View File
@@ -0,0 +1,70 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.methods = void 0;
const image_q_1 = require("image-q");
const zod_1 = __importDefault(require("zod"));
const QuantizeOptionsSchema = zod_1.default.object({
colors: zod_1.default.number().optional(),
colorDistanceFormula: zod_1.default
.union([
zod_1.default.literal("cie94-textiles"),
zod_1.default.literal("cie94-graphic-arts"),
zod_1.default.literal("ciede2000"),
zod_1.default.literal("color-metric"),
zod_1.default.literal("euclidean"),
zod_1.default.literal("euclidean-bt709-noalpha"),
zod_1.default.literal("euclidean-bt709"),
zod_1.default.literal("manhattan"),
zod_1.default.literal("manhattan-bt709"),
zod_1.default.literal("manhattan-nommyde"),
zod_1.default.literal("pngquant"),
])
.optional(),
paletteQuantization: zod_1.default
.union([
zod_1.default.literal("neuquant"),
zod_1.default.literal("neuquant-float"),
zod_1.default.literal("rgbquant"),
zod_1.default.literal("wuquant"),
])
.optional(),
imageQuantization: zod_1.default
.union([
zod_1.default.literal("nearest"),
zod_1.default.literal("riemersma"),
zod_1.default.literal("floyd-steinberg"),
zod_1.default.literal("false-floyd-steinberg"),
zod_1.default.literal("stucki"),
zod_1.default.literal("atkinson"),
zod_1.default.literal("jarvis"),
zod_1.default.literal("burkes"),
zod_1.default.literal("sierra"),
zod_1.default.literal("two-sierra"),
zod_1.default.literal("sierra-lite"),
])
.optional(),
});
exports.methods = {
/**
* Image color number reduction.
*/
quantize(image, options) {
const { colors, colorDistanceFormula, paletteQuantization, imageQuantization, } = QuantizeOptionsSchema.parse(options);
const inPointContainer = image_q_1.utils.PointContainer.fromUint8Array(image.bitmap.data, image.bitmap.width, image.bitmap.height);
const palette = (0, image_q_1.buildPaletteSync)([inPointContainer], {
colors,
colorDistanceFormula,
paletteQuantization,
});
const outPointContainer = (0, image_q_1.applyPaletteSync)(inPointContainer, palette, {
colorDistanceFormula,
imageQuantization,
});
image.bitmap.data = Buffer.from(outPointContainer.toUint8Array());
return image;
},
};
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AACA,qCAAoE;AACpE,8CAAoB;AAEpB,MAAM,qBAAqB,GAAG,aAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB,EAAE,aAAC;SACpB,KAAK,CAAC;QACL,aAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3B,aAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC/B,aAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACtB,aAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACzB,aAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACtB,aAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;QACpC,aAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5B,aAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACtB,aAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5B,aAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC9B,aAAC,CAAC,OAAO,CAAC,UAAU,CAAC;KACtB,CAAC;SACD,QAAQ,EAAE;IACb,mBAAmB,EAAE,aAAC;SACnB,KAAK,CAAC;QACL,aAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrB,aAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3B,aAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrB,aAAC,CAAC,OAAO,CAAC,SAAS,CAAC;KACrB,CAAC;SACD,QAAQ,EAAE;IACb,iBAAiB,EAAE,aAAC;SACjB,KAAK,CAAC;QACL,aAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACpB,aAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACtB,aAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5B,aAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAClC,aAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,aAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrB,aAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,aAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,aAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,aAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACvB,aAAC,CAAC,OAAO,CAAC,aAAa,CAAC;KACzB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAIU,QAAA,OAAO,GAAG;IACrB;;OAEG;IACH,QAAQ,CAAsB,KAAQ,EAAE,OAAwB;QAC9D,MAAM,EACJ,MAAM,EACN,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAClB,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,gBAAgB,GAAG,eAAK,CAAC,cAAc,CAAC,cAAc,CAC1D,KAAK,CAAC,MAAM,CAAC,IAAI,EACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB,KAAK,CAAC,MAAM,CAAC,MAAM,CACpB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,CAAC,gBAAgB,CAAC,EAAE;YACnD,MAAM;YACN,oBAAoB;YACpB,mBAAmB;SACpB,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,IAAA,0BAAgB,EAAC,gBAAgB,EAAE,OAAO,EAAE;YACpE,oBAAoB;YACpB,iBAAiB;SAClB,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;QAElE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
+3
View File
@@ -0,0 +1,3 @@
{
"type": "commonjs"
}