image-color-grading 1.0.0

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.
@@ -0,0 +1,97 @@
1
+ /**
2
+ * 调色设置参数
3
+ */
4
+ export interface ColorGradingSettings {
5
+ /** 自然饱和度 (-100 ~ 100) */
6
+ vibrance: number;
7
+ /** 饱和度 (-100 ~ 100) */
8
+ saturation: number;
9
+ /** 色温 (-100 ~ 100) */
10
+ temperature: number;
11
+ /** 色调 (-100 ~ 100) */
12
+ tint: number;
13
+ /** 色相 (-100 ~ 100) */
14
+ hue: number;
15
+ /** 亮度 (-100 ~ 100) */
16
+ brightness: number;
17
+ /** 曝光度 (-100 ~ 100) */
18
+ exposure: number;
19
+ /** 对比度 (-100 ~ 100) */
20
+ contrast: number;
21
+ /** 黑色 (-100 ~ 100) */
22
+ blacks: number;
23
+ /** 白色 (-100 ~ 100) */
24
+ whites: number;
25
+ /** 高光 (-100 ~ 100) */
26
+ highlights: number;
27
+ /** 暗调 (-100 ~ 100) */
28
+ shadows: number;
29
+ /** 除雾化 (0 ~ 100) */
30
+ dehaze: number;
31
+ /** 泛光 (0 ~ 100) */
32
+ bloom: number;
33
+ /** 氛围美化 (0 ~ 100) */
34
+ glamour: number;
35
+ /** 清晰度 (-100 ~ 100) */
36
+ clarity: number;
37
+ /** 锐化 (0 ~ 100) */
38
+ sharpen: number;
39
+ /** 平滑 (0 ~ 100) */
40
+ smooth: number;
41
+ /** 模糊 (0 ~ 100) */
42
+ blur: number;
43
+ /** 暗角 (-100 ~ 100) */
44
+ vignette: number;
45
+ /** 颗粒 (0 ~ 100) */
46
+ grain: number;
47
+ }
48
+ /**
49
+ * 部分调色设置参数
50
+ */
51
+ export type PartialColorGradingSettings = Partial<ColorGradingSettings>;
52
+ /**
53
+ * WebGL 程序信息
54
+ */
55
+ export interface ProgramInfo {
56
+ program: WebGLProgram;
57
+ attribs: {
58
+ aPosition: number;
59
+ aTexCoord: number;
60
+ apos: number;
61
+ auv: number;
62
+ };
63
+ uniforms: Record<string, WebGLUniformLocation | null>;
64
+ }
65
+ /**
66
+ * 渲染目标
67
+ */
68
+ export interface RenderTarget {
69
+ framebuffer: WebGLFramebuffer;
70
+ texture: WebGLTexture;
71
+ }
72
+ /**
73
+ * WebGL 资源
74
+ */
75
+ export interface WebGLResources {
76
+ gl: WebGLRenderingContext;
77
+ width: number;
78
+ height: number;
79
+ sourceTexture: WebGLTexture;
80
+ blackPalette: WebGLTexture;
81
+ quad: {
82
+ positionBuffer: WebGLBuffer;
83
+ texCoordBuffer: WebGLBuffer;
84
+ };
85
+ programs: Record<string, ProgramInfo>;
86
+ targets: [RenderTarget, RenderTarget];
87
+ }
88
+ /**
89
+ * 导出选项
90
+ */
91
+ export interface ExportOptions {
92
+ /** 导出格式 */
93
+ format?: 'image/png' | 'image/jpeg' | 'image/webp';
94
+ /** JPEG/WebP 质量 (0-1) */
95
+ quality?: number;
96
+ }
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,qBAAqB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE;QACJ,cAAc,EAAE,WAAW,CAAC;QAC5B,cAAc,EAAE,WAAW,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,MAAM,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;IACnD,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import type { ProgramInfo, RenderTarget } from './types';
2
+ /**
3
+ * 创建 WebGL 着色器
4
+ */
5
+ export declare function createShader(gl: WebGLRenderingContext, type: GLenum, source: string): WebGLShader | null;
6
+ /**
7
+ * 创建 WebGL 程序
8
+ */
9
+ export declare function createProgram(gl: WebGLRenderingContext, vs: WebGLShader, fs: WebGLShader): WebGLProgram | null;
10
+ /**
11
+ * 构建程序信息
12
+ */
13
+ export declare function buildProgram(gl: WebGLRenderingContext, vertex: string, fragment: string, uniforms: string[]): ProgramInfo;
14
+ /**
15
+ * 创建渲染目标
16
+ */
17
+ export declare function createRenderTarget(gl: WebGLRenderingContext, width: number, height: number): RenderTarget;
18
+ /**
19
+ * 限制值在 0-1 范围内
20
+ */
21
+ export declare const clamp01: (value: number) => number;
22
+ /**
23
+ * 三次贝塞尔曲线
24
+ */
25
+ export declare const cubicBezier: (t: number, p0: number, p1: number, p2: number, p3: number) => number;
26
+ /**
27
+ * 构建曲线调色板
28
+ */
29
+ export declare const buildCurvePalette: (lowControl: number, highControl: number) => Uint8Array;
30
+ /**
31
+ * 构建黑色调色板
32
+ */
33
+ export declare const buildBlackPalette: (amount: number) => Uint8Array;
34
+ /**
35
+ * 创建调色板纹理
36
+ */
37
+ export declare const createPaletteTexture: (gl: WebGLRenderingContext, data: Uint8Array) => WebGLTexture;
38
+ /**
39
+ * 更新调色板纹理
40
+ */
41
+ export declare const updatePaletteTexture: (gl: WebGLRenderingContext, texture: WebGLTexture, data: Uint8Array) => void;
42
+ /**
43
+ * 构建对比度矩阵
44
+ */
45
+ export declare const buildContrastMatrix: (amount: number) => Float32Array;
46
+ /**
47
+ * 构建饱和度矩阵
48
+ */
49
+ export declare const buildSaturationMatrix: (amount: number) => Float32Array;
50
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,qBAAqB,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAapB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,qBAAqB,EACzB,EAAE,EAAE,WAAW,EACf,EAAE,EAAE,WAAW,GACd,YAAY,GAAG,IAAI,CAcrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,qBAAqB,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,WAAW,CAqBb;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,qBAAqB,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,YAAY,CAoCd;AAID;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,MAAyC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,KAAG,MAQvF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,EAAE,aAAa,MAAM,KAAG,UAY3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,UAMlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,IAAI,qBAAqB,EAAE,MAAM,UAAU,KAAG,YAsBlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,IAAI,qBAAqB,EACzB,SAAS,YAAY,EACrB,MAAM,UAAU,KACf,IAaF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,YAUpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,KAAG,YAatD,CAAC"}
package/dist/utils.js ADDED
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 创建 WebGL 着色器
3
+ */
4
+ export function createShader(gl, type, source) {
5
+ const shader = gl.createShader(type);
6
+ if (!shader)
7
+ return null;
8
+ gl.shaderSource(shader, source);
9
+ gl.compileShader(shader);
10
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
11
+ console.error('Shader compile error:', gl.getShaderInfoLog(shader));
12
+ gl.deleteShader(shader);
13
+ return null;
14
+ }
15
+ return shader;
16
+ }
17
+ /**
18
+ * 创建 WebGL 程序
19
+ */
20
+ export function createProgram(gl, vs, fs) {
21
+ const program = gl.createProgram();
22
+ if (!program)
23
+ return null;
24
+ gl.attachShader(program, vs);
25
+ gl.attachShader(program, fs);
26
+ gl.linkProgram(program);
27
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
28
+ console.error('Program link error:', gl.getProgramInfoLog(program));
29
+ gl.deleteProgram(program);
30
+ return null;
31
+ }
32
+ return program;
33
+ }
34
+ /**
35
+ * 构建程序信息
36
+ */
37
+ export function buildProgram(gl, vertex, fragment, uniforms) {
38
+ const vs = createShader(gl, gl.VERTEX_SHADER, vertex);
39
+ const fs = createShader(gl, gl.FRAGMENT_SHADER, fragment);
40
+ if (!vs || !fs) {
41
+ throw new Error('Shader compile failed.');
42
+ }
43
+ const program = createProgram(gl, vs, fs);
44
+ if (!program) {
45
+ throw new Error('Program link failed.');
46
+ }
47
+ const attribs = {
48
+ aPosition: gl.getAttribLocation(program, 'aPosition'),
49
+ aTexCoord: gl.getAttribLocation(program, 'aTexCoord'),
50
+ apos: gl.getAttribLocation(program, 'apos'),
51
+ auv: gl.getAttribLocation(program, 'auv'),
52
+ };
53
+ const uniformMap = {};
54
+ uniforms.forEach((name) => {
55
+ uniformMap[name] = gl.getUniformLocation(program, name);
56
+ });
57
+ return { program, attribs, uniforms: uniformMap };
58
+ }
59
+ /**
60
+ * 创建渲染目标
61
+ */
62
+ export function createRenderTarget(gl, width, height) {
63
+ const texture = gl.createTexture();
64
+ if (!texture) {
65
+ throw new Error('Unable to create texture');
66
+ }
67
+ gl.bindTexture(gl.TEXTURE_2D, texture);
68
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
69
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
70
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
71
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
72
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
73
+ const framebuffer = gl.createFramebuffer();
74
+ if (!framebuffer) {
75
+ throw new Error('Unable to create framebuffer');
76
+ }
77
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
78
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
79
+ return { framebuffer, texture };
80
+ }
81
+ const PALETTE_SIZE = 256;
82
+ /**
83
+ * 限制值在 0-1 范围内
84
+ */
85
+ export const clamp01 = (value) => Math.min(1, Math.max(0, value));
86
+ /**
87
+ * 三次贝塞尔曲线
88
+ */
89
+ export const cubicBezier = (t, p0, p1, p2, p3) => {
90
+ const u = 1 - t;
91
+ return (u * u * u * p0 +
92
+ 3 * u * u * t * p1 +
93
+ 3 * u * t * t * p2 +
94
+ t * t * t * p3);
95
+ };
96
+ /**
97
+ * 构建曲线调色板
98
+ */
99
+ export const buildCurvePalette = (lowControl, highControl) => {
100
+ const data = new Uint8Array(PALETTE_SIZE * 3);
101
+ for (let i = 0; i < PALETTE_SIZE; i += 1) {
102
+ const t = i / (PALETTE_SIZE - 1);
103
+ const y = cubicBezier(t, 0, lowControl, highControl, 1);
104
+ const v = Math.round(clamp01(y) * 255);
105
+ const idx = i * 3;
106
+ data[idx] = v;
107
+ data[idx + 1] = v;
108
+ data[idx + 2] = v;
109
+ }
110
+ return data;
111
+ };
112
+ /**
113
+ * 构建黑色调色板
114
+ */
115
+ export const buildBlackPalette = (amount) => {
116
+ const amt = Math.max(-100, Math.min(100, amount)) / 100;
117
+ const strength = 0.35;
118
+ const lowControl = clamp01(0.33 - amt * strength);
119
+ const highControl = 0.66;
120
+ return buildCurvePalette(lowControl, highControl);
121
+ };
122
+ /**
123
+ * 创建调色板纹理
124
+ */
125
+ export const createPaletteTexture = (gl, data) => {
126
+ const texture = gl.createTexture();
127
+ if (!texture) {
128
+ throw new Error('Unable to create palette texture');
129
+ }
130
+ gl.bindTexture(gl.TEXTURE_2D, texture);
131
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, PALETTE_SIZE, 1, 0, gl.RGB, gl.UNSIGNED_BYTE, data);
132
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
133
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
134
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
135
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
136
+ return texture;
137
+ };
138
+ /**
139
+ * 更新调色板纹理
140
+ */
141
+ export const updatePaletteTexture = (gl, texture, data) => {
142
+ gl.bindTexture(gl.TEXTURE_2D, texture);
143
+ gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, PALETTE_SIZE, 1, gl.RGB, gl.UNSIGNED_BYTE, data);
144
+ };
145
+ /**
146
+ * 构建对比度矩阵
147
+ */
148
+ export const buildContrastMatrix = (amount) => {
149
+ const t = Math.max(-100, Math.min(100, amount)) / 100;
150
+ const scale = 1 + t;
151
+ const offset = 0.5 * (1 - scale);
152
+ return new Float32Array([
153
+ scale, 0, 0, 0, offset,
154
+ 0, scale, 0, 0, offset,
155
+ 0, 0, scale, 0, offset,
156
+ 0, 0, 0, 1, 0,
157
+ ]);
158
+ };
159
+ /**
160
+ * 构建饱和度矩阵
161
+ */
162
+ export const buildSaturationMatrix = (amount) => {
163
+ const t = Math.max(-100, Math.min(100, amount)) / 100;
164
+ const scale = 1 + t;
165
+ const lumR = 0.299;
166
+ const lumG = 0.587;
167
+ const lumB = 0.114;
168
+ const inv = 1 - scale;
169
+ return new Float32Array([
170
+ inv * lumR + scale, inv * lumG, inv * lumB, 0, 0,
171
+ inv * lumR, inv * lumG + scale, inv * lumB, 0, 0,
172
+ inv * lumR, inv * lumG, inv * lumB + scale, 0, 0,
173
+ 0, 0, 0, 1, 0,
174
+ ]);
175
+ };
176
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "image-color-grading",
3
+ "version": "1.0.0",
4
+ "description": "基于 WebGL 的高性能图像调色库,支持亮度、对比度、饱和度、色温等 22+ 种调色参数",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsc --watch",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "keywords": [
25
+ "image",
26
+ "color",
27
+ "grading",
28
+ "filter",
29
+ "webgl",
30
+ "brightness",
31
+ "contrast",
32
+ "saturation",
33
+ "photo",
34
+ "edit",
35
+ "调色",
36
+ "图像处理"
37
+ ],
38
+ "author": "",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": ""
43
+ },
44
+ "devDependencies": {
45
+ "typescript": "^5.0.0"
46
+ },
47
+ "engines": {
48
+ "node": ">=16.0.0"
49
+ },
50
+ "sideEffects": false
51
+ }