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

+118
View File
@@ -0,0 +1,118 @@
import { JimpClass } from "@jimp/types";
import { z } from "zod";
declare const BlitOptionsSchema: z.ZodUnion<[z.ZodObject<{
bitmap: z.ZodObject<{
data: z.ZodUnion<[z.ZodType<Buffer, z.ZodTypeDef, Buffer>, z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>]>;
width: z.ZodNumber;
height: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
data: Buffer | Uint8Array;
width: number;
height: number;
}, {
data: Buffer | Uint8Array;
width: number;
height: number;
}>;
}, "strip", z.ZodTypeAny, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}>, z.ZodObject<{
src: z.ZodObject<{
bitmap: z.ZodObject<{
data: z.ZodUnion<[z.ZodType<Buffer, z.ZodTypeDef, Buffer>, z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>]>;
width: z.ZodNumber;
height: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
data: Buffer | Uint8Array;
width: number;
height: number;
}, {
data: Buffer | Uint8Array;
width: number;
height: number;
}>;
}, "strip", z.ZodTypeAny, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}>;
/** the x position to blit the image */
x: z.ZodOptional<z.ZodNumber>;
/** the y position to blit the image */
y: z.ZodOptional<z.ZodNumber>;
/** the x position from which to crop the source image */
srcX: z.ZodOptional<z.ZodNumber>;
/** the y position from which to crop the source image */
srcY: z.ZodOptional<z.ZodNumber>;
/** the width to which to crop the source image */
srcW: z.ZodOptional<z.ZodNumber>;
/** the height to which to crop the source image */
srcH: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
src: {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
};
x?: number | undefined;
y?: number | undefined;
srcX?: number | undefined;
srcY?: number | undefined;
srcW?: number | undefined;
srcH?: number | undefined;
}, {
src: {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
};
x?: number | undefined;
y?: number | undefined;
srcX?: number | undefined;
srcY?: number | undefined;
srcW?: number | undefined;
srcH?: number | undefined;
}>]>;
export type BlitOptions = z.infer<typeof BlitOptionsSchema>;
export declare const methods: {
/**
* Short for "bit-block transfer".
* It involves the transfer of a block of pixel data from one area of a computer's memory to another area, typically for the purpose of rendering images on the screen or manipulating them in various ways.
* It's a fundamental operation in computer graphics utilized in various applications, from operating systems to video games.
*
* @example
* ```ts
* import { Jimp } from "jimp";
*
* const image = await Jimp.read("test/image.png");
* const parrot = await Jimp.read("test/party-parrot.png");
*
* image.blit({ src: parrot, x: 10, y: 10 });
* ```
*/
blit<I extends JimpClass>(image: I, options: BlitOptions): 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,EAAmB,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,QAAA,MAAM,iBAAiB;;oCAEV,MAAM,gBAAe,MAAO;;;;cAK0B,MAAO;;;;cAAoF,MAAO;;;;;;cAClF,MAAO;;;;;;cAKvF,MACF;;;;;;;wCAZY,MAAM,gBAAe,MAAO;;;;kBAK0B,MAAO;;;;kBAAoF,MAAO;;;;;;kBAClF,MAAO;;;;;;kBAKvF,MACF;;;;;IA9BC,uCAAuC;;IAEvC,uCAAuC;;IAEvC,yDAAyD;;IAEzD,yDAAyD;;IAEzD,kDAAkD;;IAElD,mDAAmD;;;;;kBAc8B,MAAO;;;;;;;;;;;;;;kBAKvF,MACF;;;;;;;;;;;IAd6E,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,OAAO;IAClB;;;;;;;;;;;;;;OAcG;SACE,CAAC,SAAS,SAAS,SAAS,CAAC,WAAW,WAAW;CAuEzD,CAAC"}
+92
View File
@@ -0,0 +1,92 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.methods = void 0;
const types_1 = require("@jimp/types");
const utils_1 = require("@jimp/utils");
const zod_1 = require("zod");
const BlitOptionsSchemaComplex = zod_1.z.object({
src: types_1.JimpClassSchema,
/** the x position to blit the image */
x: zod_1.z.number().optional(),
/** the y position to blit the image */
y: zod_1.z.number().optional(),
/** the x position from which to crop the source image */
srcX: zod_1.z.number().optional(),
/** the y position from which to crop the source image */
srcY: zod_1.z.number().optional(),
/** the width to which to crop the source image */
srcW: zod_1.z.number().optional(),
/** the height to which to crop the source image */
srcH: zod_1.z.number().optional(),
});
const BlitOptionsSchema = zod_1.z.union([types_1.JimpClassSchema, BlitOptionsSchemaComplex]);
exports.methods = {
/**
* Short for "bit-block transfer".
* It involves the transfer of a block of pixel data from one area of a computer's memory to another area, typically for the purpose of rendering images on the screen or manipulating them in various ways.
* It's a fundamental operation in computer graphics utilized in various applications, from operating systems to video games.
*
* @example
* ```ts
* import { Jimp } from "jimp";
*
* const image = await Jimp.read("test/image.png");
* const parrot = await Jimp.read("test/party-parrot.png");
*
* image.blit({ src: parrot, x: 10, y: 10 });
* ```
*/
blit(image, options) {
const parsed = BlitOptionsSchema.parse(options);
let {
// eslint-disable-next-line prefer-const
src, x = 0, y = 0, srcX = 0, srcY = 0, srcW = src.bitmap.width, srcH = src.bitmap.height, } = "bitmap" in parsed ? { src: parsed } : parsed;
if (!("bitmap" in src)) {
throw new Error("The source must be a Jimp image");
}
if (typeof x !== "number" || typeof y !== "number") {
throw new Error("x and y must be numbers");
}
// round input
x = Math.round(x);
y = Math.round(y);
// round input
srcX = Math.round(srcX);
srcY = Math.round(srcY);
srcW = Math.round(srcW);
srcH = Math.round(srcH);
const maxWidth = image.bitmap.width;
const maxHeight = image.bitmap.height;
(0, utils_1.scan)(src, srcX, srcY, srcW, srcH, function (sx, sy, idx) {
const xOffset = x + sx - srcX;
const yOffset = y + sy - srcY;
if (xOffset >= 0 &&
yOffset >= 0 &&
maxWidth - xOffset > 0 &&
maxHeight - yOffset > 0) {
const dstIdx = image.getPixelIndex(xOffset, yOffset);
const srcColor = {
r: src.bitmap.data[idx] || 0,
g: src.bitmap.data[idx + 1] || 0,
b: src.bitmap.data[idx + 2] || 0,
a: src.bitmap.data[idx + 3] || 0,
};
const dst = {
r: image.bitmap.data[dstIdx] || 0,
g: image.bitmap.data[dstIdx + 1] || 0,
b: image.bitmap.data[dstIdx + 2] || 0,
a: image.bitmap.data[dstIdx + 3] || 0,
};
image.bitmap.data[dstIdx] =
((srcColor.a * (srcColor.r - dst.r) - dst.r + 255) >> 8) + dst.r;
image.bitmap.data[dstIdx + 1] =
((srcColor.a * (srcColor.g - dst.g) - dst.g + 255) >> 8) + dst.g;
image.bitmap.data[dstIdx + 2] =
((srcColor.a * (srcColor.b - dst.b) - dst.b + 255) >> 8) + dst.b;
image.bitmap.data[dstIdx + 3] = (0, utils_1.limit255)(dst.a + srcColor.a);
}
});
return image;
},
};
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
+3
View File
@@ -0,0 +1,3 @@
{
"type": "commonjs"
}
+118
View File
@@ -0,0 +1,118 @@
import { JimpClass } from "@jimp/types";
import { z } from "zod";
declare const BlitOptionsSchema: z.ZodUnion<[z.ZodObject<{
bitmap: z.ZodObject<{
data: z.ZodUnion<[z.ZodType<Buffer, z.ZodTypeDef, Buffer>, z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>]>;
width: z.ZodNumber;
height: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
data: Buffer | Uint8Array;
width: number;
height: number;
}, {
data: Buffer | Uint8Array;
width: number;
height: number;
}>;
}, "strip", z.ZodTypeAny, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}>, z.ZodObject<{
src: z.ZodObject<{
bitmap: z.ZodObject<{
data: z.ZodUnion<[z.ZodType<Buffer, z.ZodTypeDef, Buffer>, z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>]>;
width: z.ZodNumber;
height: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
data: Buffer | Uint8Array;
width: number;
height: number;
}, {
data: Buffer | Uint8Array;
width: number;
height: number;
}>;
}, "strip", z.ZodTypeAny, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}, {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
}>;
/** the x position to blit the image */
x: z.ZodOptional<z.ZodNumber>;
/** the y position to blit the image */
y: z.ZodOptional<z.ZodNumber>;
/** the x position from which to crop the source image */
srcX: z.ZodOptional<z.ZodNumber>;
/** the y position from which to crop the source image */
srcY: z.ZodOptional<z.ZodNumber>;
/** the width to which to crop the source image */
srcW: z.ZodOptional<z.ZodNumber>;
/** the height to which to crop the source image */
srcH: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
src: {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
};
x?: number | undefined;
y?: number | undefined;
srcX?: number | undefined;
srcY?: number | undefined;
srcW?: number | undefined;
srcH?: number | undefined;
}, {
src: {
bitmap: {
data: Buffer | Uint8Array;
width: number;
height: number;
};
};
x?: number | undefined;
y?: number | undefined;
srcX?: number | undefined;
srcY?: number | undefined;
srcW?: number | undefined;
srcH?: number | undefined;
}>]>;
export type BlitOptions = z.infer<typeof BlitOptionsSchema>;
export declare const methods: {
/**
* Short for "bit-block transfer".
* It involves the transfer of a block of pixel data from one area of a computer's memory to another area, typically for the purpose of rendering images on the screen or manipulating them in various ways.
* It's a fundamental operation in computer graphics utilized in various applications, from operating systems to video games.
*
* @example
* ```ts
* import { Jimp } from "jimp";
*
* const image = await Jimp.read("test/image.png");
* const parrot = await Jimp.read("test/party-parrot.png");
*
* image.blit({ src: parrot, x: 10, y: 10 });
* ```
*/
blit<I extends JimpClass>(image: I, options: BlitOptions): 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,EAAmB,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,QAAA,MAAM,iBAAiB;;oCAEV,MAAM,gBAAe,MAAO;;;;cAK0B,MAAO;;;;cAAoF,MAAO;;;;;;cAClF,MAAO;;;;;;cAKvF,MACF;;;;;;;wCAZY,MAAM,gBAAe,MAAO;;;;kBAK0B,MAAO;;;;kBAAoF,MAAO;;;;;;kBAClF,MAAO;;;;;;kBAKvF,MACF;;;;;IA9BC,uCAAuC;;IAEvC,uCAAuC;;IAEvC,yDAAyD;;IAEzD,yDAAyD;;IAEzD,kDAAkD;;IAElD,mDAAmD;;;;;kBAc8B,MAAO;;;;;;;;;;;;;;kBAKvF,MACF;;;;;;;;;;;IAd6E,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,OAAO;IAClB;;;;;;;;;;;;;;OAcG;SACE,CAAC,SAAS,SAAS,SAAS,CAAC,WAAW,WAAW;CAuEzD,CAAC"}
+89
View File
@@ -0,0 +1,89 @@
import { JimpClassSchema } from "@jimp/types";
import { limit255, scan } from "@jimp/utils";
import { z } from "zod";
const BlitOptionsSchemaComplex = z.object({
src: JimpClassSchema,
/** the x position to blit the image */
x: z.number().optional(),
/** the y position to blit the image */
y: z.number().optional(),
/** the x position from which to crop the source image */
srcX: z.number().optional(),
/** the y position from which to crop the source image */
srcY: z.number().optional(),
/** the width to which to crop the source image */
srcW: z.number().optional(),
/** the height to which to crop the source image */
srcH: z.number().optional(),
});
const BlitOptionsSchema = z.union([JimpClassSchema, BlitOptionsSchemaComplex]);
export const methods = {
/**
* Short for "bit-block transfer".
* It involves the transfer of a block of pixel data from one area of a computer's memory to another area, typically for the purpose of rendering images on the screen or manipulating them in various ways.
* It's a fundamental operation in computer graphics utilized in various applications, from operating systems to video games.
*
* @example
* ```ts
* import { Jimp } from "jimp";
*
* const image = await Jimp.read("test/image.png");
* const parrot = await Jimp.read("test/party-parrot.png");
*
* image.blit({ src: parrot, x: 10, y: 10 });
* ```
*/
blit(image, options) {
const parsed = BlitOptionsSchema.parse(options);
let {
// eslint-disable-next-line prefer-const
src, x = 0, y = 0, srcX = 0, srcY = 0, srcW = src.bitmap.width, srcH = src.bitmap.height, } = "bitmap" in parsed ? { src: parsed } : parsed;
if (!("bitmap" in src)) {
throw new Error("The source must be a Jimp image");
}
if (typeof x !== "number" || typeof y !== "number") {
throw new Error("x and y must be numbers");
}
// round input
x = Math.round(x);
y = Math.round(y);
// round input
srcX = Math.round(srcX);
srcY = Math.round(srcY);
srcW = Math.round(srcW);
srcH = Math.round(srcH);
const maxWidth = image.bitmap.width;
const maxHeight = image.bitmap.height;
scan(src, srcX, srcY, srcW, srcH, function (sx, sy, idx) {
const xOffset = x + sx - srcX;
const yOffset = y + sy - srcY;
if (xOffset >= 0 &&
yOffset >= 0 &&
maxWidth - xOffset > 0 &&
maxHeight - yOffset > 0) {
const dstIdx = image.getPixelIndex(xOffset, yOffset);
const srcColor = {
r: src.bitmap.data[idx] || 0,
g: src.bitmap.data[idx + 1] || 0,
b: src.bitmap.data[idx + 2] || 0,
a: src.bitmap.data[idx + 3] || 0,
};
const dst = {
r: image.bitmap.data[dstIdx] || 0,
g: image.bitmap.data[dstIdx + 1] || 0,
b: image.bitmap.data[dstIdx + 2] || 0,
a: image.bitmap.data[dstIdx + 3] || 0,
};
image.bitmap.data[dstIdx] =
((srcColor.a * (srcColor.r - dst.r) - dst.r + 255) >> 8) + dst.r;
image.bitmap.data[dstIdx + 1] =
((srcColor.a * (srcColor.g - dst.g) - dst.g + 255) >> 8) + dst.g;
image.bitmap.data[dstIdx + 2] =
((srcColor.a * (srcColor.b - dst.b) - dst.b + 255) >> 8) + dst.b;
image.bitmap.data[dstIdx + 3] = limit255(dst.a + srcColor.a);
}
});
return image;
},
};
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
+3
View File
@@ -0,0 +1,3 @@
{
"type": "module"
}