@pixzle/core 0.0.20 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block-operations.js +5 -4
- package/dist/block-operations.js.map +1 -1
- package/dist/block-utils.d.ts +4 -2
- package/dist/block-utils.js +12 -4
- package/dist/block-utils.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/types.d.ts +8 -9
- package/package.json +3 -2
package/dist/block-operations.js
CHANGED
|
@@ -21,20 +21,21 @@ function extractBlock(buffer, imageWidth, imageHeight, startX, startY, blockSize
|
|
|
21
21
|
const blockHeight = imageHeight !== undefined
|
|
22
22
|
? Math.min(blockSize, imageHeight - startY)
|
|
23
23
|
: blockSize;
|
|
24
|
-
const blockData =
|
|
24
|
+
const blockData = new Uint8Array(blockSize * blockSize * block_utils_1.RGBA_CHANNELS);
|
|
25
25
|
// Extract pixel data row by row
|
|
26
26
|
for (let y = 0; y < blockHeight; y++) {
|
|
27
27
|
for (let x = 0; x < blockWidth; x++) {
|
|
28
28
|
const pixelX = startX + x;
|
|
29
29
|
const pixelY = startY + y;
|
|
30
30
|
const pixelIndex = (pixelY * imageWidth + pixelX) * block_utils_1.RGBA_CHANNELS;
|
|
31
|
+
const blockIndex = (y * blockSize + x) * block_utils_1.RGBA_CHANNELS;
|
|
31
32
|
// Copy RGBA channels
|
|
32
33
|
for (let channel = 0; channel < block_utils_1.RGBA_CHANNELS; channel++) {
|
|
33
|
-
blockData
|
|
34
|
+
blockData[blockIndex + channel] = buffer[pixelIndex + channel] || 0;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
return
|
|
38
|
+
return blockData;
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
41
|
* Place block data at the specified position in the target image buffer
|
|
@@ -53,7 +54,7 @@ function placeBlock(targetBuffer, blockData, targetWidth, destX, destY, blockSiz
|
|
|
53
54
|
// Place pixels row by row
|
|
54
55
|
for (let y = 0; y < actualHeight; y++) {
|
|
55
56
|
for (let x = 0; x < actualWidth; x++) {
|
|
56
|
-
const sourceIndex = (y *
|
|
57
|
+
const sourceIndex = (y * blockSize + x) * block_utils_1.RGBA_CHANNELS;
|
|
57
58
|
const targetIndex = ((destY + y) * targetWidth + (destX + x)) * block_utils_1.RGBA_CHANNELS;
|
|
58
59
|
// Ensure we don't write beyond buffer bounds
|
|
59
60
|
if (targetIndex + block_utils_1.RGBA_CHANNELS <= targetBuffer.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-operations.js","sourceRoot":"","sources":["../src/block-operations.ts"],"names":[],"mappings":";;AAgCA,
|
|
1
|
+
{"version":3,"file":"block-operations.js","sourceRoot":"","sources":["../src/block-operations.ts"],"names":[],"mappings":"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"}
|
package/dist/block-utils.d.ts
CHANGED
|
@@ -35,12 +35,14 @@ export declare function calculateBlockCountsForCrossImages(totalBlocks: number,
|
|
|
35
35
|
/**
|
|
36
36
|
* Calculate block counts for each image
|
|
37
37
|
* @param images Array of ImageInfo objects
|
|
38
|
+
* @param blockSize Block size
|
|
38
39
|
* @returns Array of block counts per image (x * y)
|
|
39
40
|
*/
|
|
40
|
-
export declare function calculateBlockCountsPerImage(images: ImageInfo[]): number[];
|
|
41
|
+
export declare function calculateBlockCountsPerImage(images: ImageInfo[], blockSize: number): number[];
|
|
41
42
|
/**
|
|
42
43
|
* Calculate total number of blocks from images
|
|
43
44
|
* @param images Array of ImageInfo objects
|
|
45
|
+
* @param blockSize Block size
|
|
44
46
|
* @returns Total block count
|
|
45
47
|
*/
|
|
46
|
-
export declare function calculateTotalBlocks(images: ImageInfo[]): number;
|
|
48
|
+
export declare function calculateTotalBlocks(images: ImageInfo[], blockSize: number): number;
|
package/dist/block-utils.js
CHANGED
|
@@ -70,17 +70,25 @@ function calculateBlockCountsForCrossImages(totalBlocks, fragmentCount) {
|
|
|
70
70
|
/**
|
|
71
71
|
* Calculate block counts for each image
|
|
72
72
|
* @param images Array of ImageInfo objects
|
|
73
|
+
* @param blockSize Block size
|
|
73
74
|
* @returns Array of block counts per image (x * y)
|
|
74
75
|
*/
|
|
75
|
-
function calculateBlockCountsPerImage(images) {
|
|
76
|
-
return images.map((info) =>
|
|
76
|
+
function calculateBlockCountsPerImage(images, blockSize) {
|
|
77
|
+
return images.map((info) => {
|
|
78
|
+
const { blockCountX, blockCountY } = calculateBlockCounts(info.w, info.h, blockSize);
|
|
79
|
+
return blockCountX * blockCountY;
|
|
80
|
+
});
|
|
77
81
|
}
|
|
78
82
|
/**
|
|
79
83
|
* Calculate total number of blocks from images
|
|
80
84
|
* @param images Array of ImageInfo objects
|
|
85
|
+
* @param blockSize Block size
|
|
81
86
|
* @returns Total block count
|
|
82
87
|
*/
|
|
83
|
-
function calculateTotalBlocks(images) {
|
|
84
|
-
return images.reduce((total, image) =>
|
|
88
|
+
function calculateTotalBlocks(images, blockSize) {
|
|
89
|
+
return images.reduce((total, image) => {
|
|
90
|
+
const { blockCountX, blockCountY } = calculateBlockCounts(image.w, image.h, blockSize);
|
|
91
|
+
return total + blockCountX * blockCountY;
|
|
92
|
+
}, 0);
|
|
85
93
|
}
|
|
86
94
|
//# sourceMappingURL=block-utils.js.map
|
package/dist/block-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-utils.js","sourceRoot":"","sources":["../src/block-utils.ts"],"names":[],"mappings":";;;AAmBA,oDASC;AAQD,kDAUC;AAQD,gFAmCC;
|
|
1
|
+
{"version":3,"file":"block-utils.js","sourceRoot":"","sources":["../src/block-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DEFAULT_FRAGMENTATION_CONFIG = exports.MANIFEST_FILE_NAME = void 0;
|
|
4
4
|
exports.MANIFEST_FILE_NAME = "manifest.json";
|
|
5
5
|
exports.DEFAULT_FRAGMENTATION_CONFIG = {
|
|
6
|
-
BLOCK_SIZE:
|
|
6
|
+
BLOCK_SIZE: 8,
|
|
7
7
|
PREFIX: "img",
|
|
8
8
|
PRESERVE_NAME: false,
|
|
9
9
|
CROSS_IMAGE_SHUFFLE: false,
|
package/dist/types.d.ts
CHANGED
|
@@ -10,14 +10,19 @@ export interface RestoreOptions {
|
|
|
10
10
|
/** Image paths (e.g., ["fragment1.png", "fragment2.png"]) */
|
|
11
11
|
imagePaths: string[];
|
|
12
12
|
/** Manifest path (e.g., "./output/fragments/manifest.json") */
|
|
13
|
-
manifestPath
|
|
13
|
+
manifestPath?: string;
|
|
14
|
+
/** Manifest data object (alternative to manifestPath) */
|
|
15
|
+
manifestData?: ManifestData;
|
|
14
16
|
/** Output directory (e.g., "./output/restored") */
|
|
15
17
|
outputDir: string;
|
|
16
18
|
}
|
|
17
19
|
export interface FragmentationConfig {
|
|
18
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Pixel block size (e.g., 10x10 to 10)
|
|
22
|
+
* Smaller -> High Obfuscation / Larger -> High Performance
|
|
23
|
+
*/
|
|
19
24
|
blockSize?: number;
|
|
20
|
-
/** Prefix for fragment files (optional, default: "
|
|
25
|
+
/** Prefix for fragment files (optional, default: "img") */
|
|
21
26
|
prefix?: string;
|
|
22
27
|
/** Random seed (auto-generated if not specified) */
|
|
23
28
|
seed?: number | string;
|
|
@@ -35,12 +40,6 @@ export interface ImageInfo {
|
|
|
35
40
|
w: number;
|
|
36
41
|
/** Height */
|
|
37
42
|
h: number;
|
|
38
|
-
/** Number of channels */
|
|
39
|
-
c: number;
|
|
40
|
-
/** Number of blocks X */
|
|
41
|
-
x: number;
|
|
42
|
-
/** Number of blocks Y */
|
|
43
|
-
y: number;
|
|
44
43
|
/** Original file name in base64 encoding (optional) */
|
|
45
44
|
name?: string;
|
|
46
45
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixzle/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"description": "Core image fragmentation and restoration logic",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "tsc -p tsconfig.build.json",
|
|
31
31
|
"build:check": "tsc -p tsconfig.build.json --noEmit",
|
|
32
|
-
"test": "vitest"
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"test:watch": "vitest"
|
|
33
34
|
}
|
|
34
35
|
}
|