Initial commit
This commit is contained in:
commit
e49726988c
5445 files changed
+1089914
No files matched your search
+3
@@ -0,0 +1,3 @@
|
||||
export declare const mulTable: number[];
|
||||
export declare const shgTable: number[];
|
||||
//# sourceMappingURL=blur-tables.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"blur-tables.d.ts","sourceRoot":"","sources":["../../src/blur-tables.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,UAiBpB,CAAC;AAEF,eAAO,MAAM,QAAQ,UAepB,CAAC"}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
export const mulTable = [
|
||||
1, 57, 41, 21, 203, 34, 97, 73, 227, 91, 149, 62, 105, 45, 39, 137, 241, 107,
|
||||
3, 173, 39, 71, 65, 238, 219, 101, 187, 87, 81, 151, 141, 133, 249, 117, 221,
|
||||
209, 197, 187, 177, 169, 5, 153, 73, 139, 133, 127, 243, 233, 223, 107, 103,
|
||||
99, 191, 23, 177, 171, 165, 159, 77, 149, 9, 139, 135, 131, 253, 245, 119,
|
||||
231, 224, 109, 211, 103, 25, 195, 189, 23, 45, 175, 171, 83, 81, 79, 155, 151,
|
||||
147, 9, 141, 137, 67, 131, 129, 251, 123, 30, 235, 115, 113, 221, 217, 53, 13,
|
||||
51, 50, 49, 193, 189, 185, 91, 179, 175, 43, 169, 83, 163, 5, 79, 155, 19, 75,
|
||||
147, 145, 143, 35, 69, 17, 67, 33, 65, 255, 251, 247, 243, 239, 59, 29, 229,
|
||||
113, 111, 219, 27, 213, 105, 207, 51, 201, 199, 49, 193, 191, 47, 93, 183,
|
||||
181, 179, 11, 87, 43, 85, 167, 165, 163, 161, 159, 157, 155, 77, 19, 75, 37,
|
||||
73, 145, 143, 141, 35, 138, 137, 135, 67, 33, 131, 129, 255, 63, 250, 247, 61,
|
||||
121, 239, 237, 117, 29, 229, 227, 225, 111, 55, 109, 216, 213, 211, 209, 207,
|
||||
205, 203, 201, 199, 197, 195, 193, 48, 190, 47, 93, 185, 183, 181, 179, 178,
|
||||
176, 175, 173, 171, 85, 21, 167, 165, 41, 163, 161, 5, 79, 157, 78, 154, 153,
|
||||
19, 75, 149, 74, 147, 73, 144, 143, 71, 141, 140, 139, 137, 17, 135, 134, 133,
|
||||
66, 131, 65, 129, 1,
|
||||
];
|
||||
export const shgTable = [
|
||||
0, 9, 10, 10, 14, 12, 14, 14, 16, 15, 16, 15, 16, 15, 15, 17, 18, 17, 12, 18,
|
||||
16, 17, 17, 19, 19, 18, 19, 18, 18, 19, 19, 19, 20, 19, 20, 20, 20, 20, 20,
|
||||
20, 15, 20, 19, 20, 20, 20, 21, 21, 21, 20, 20, 20, 21, 18, 21, 21, 21, 21,
|
||||
20, 21, 17, 21, 21, 21, 22, 22, 21, 22, 22, 21, 22, 21, 19, 22, 22, 19, 20,
|
||||
22, 22, 21, 21, 21, 22, 22, 22, 18, 22, 22, 21, 22, 22, 23, 22, 20, 23, 22,
|
||||
22, 23, 23, 21, 19, 21, 21, 21, 23, 23, 23, 22, 23, 23, 21, 23, 22, 23, 18,
|
||||
22, 23, 20, 22, 23, 23, 23, 21, 22, 20, 22, 21, 22, 24, 24, 24, 24, 24, 22,
|
||||
21, 24, 23, 23, 24, 21, 24, 23, 24, 22, 24, 24, 22, 24, 24, 22, 23, 24, 24,
|
||||
24, 20, 23, 22, 23, 24, 24, 24, 24, 24, 24, 24, 23, 21, 23, 22, 23, 24, 24,
|
||||
24, 22, 24, 24, 24, 23, 22, 24, 24, 25, 23, 25, 25, 23, 24, 25, 25, 24, 22,
|
||||
25, 25, 25, 24, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 23,
|
||||
25, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 22, 25, 25, 23, 25, 25,
|
||||
20, 24, 25, 24, 25, 25, 22, 24, 25, 24, 25, 24, 25, 25, 24, 25, 25, 25, 25,
|
||||
22, 25, 25, 25, 24, 25, 24, 25, 18,
|
||||
];
|
||||
//# sourceMappingURL=blur-tables.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"blur-tables.js","sourceRoot":"","sources":["../../src/blur-tables.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC5E,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC3E,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;IAC7E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;IAC7E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;IAC7E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;IAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;IACzE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC3E,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC7E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;IAC5E,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,Line truncated
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
import { JimpClass } from "@jimp/types";
|
||||
export declare const methods: {
|
||||
/**
|
||||
* A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker
|
||||
* @param r the pixel radius of the blur
|
||||
* @example
|
||||
* ```ts
|
||||
* import { Jimp } from "jimp";
|
||||
*
|
||||
* const image = await Jimp.read("test/image.png");
|
||||
*
|
||||
* image.blur(5);
|
||||
* ```
|
||||
*/
|
||||
blur<I extends JimpClass>(image: I, r: number): I;
|
||||
/**
|
||||
* Applies a true Gaussian blur to the image (warning: this is VERY slow)
|
||||
* @param r the pixel radius of the blur
|
||||
* @example
|
||||
* ```ts
|
||||
* import { Jimp } from "jimp";
|
||||
*
|
||||
* const image = await Jimp.read("test/image.png");
|
||||
*
|
||||
* image.gaussian(15);
|
||||
* ```
|
||||
*/
|
||||
gaussian<I extends JimpClass>(image: I, r: number): I;
|
||||
};
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+BxC,eAAO,MAAM,OAAO;IAClB;;;;;;;;;;;OAWG;SACE,CAAC,SAAS,SAAS,SAAS,CAAC,KAAK,MAAM;IAgI7C;;;;;;;;;;;OAWG;aACM,CAAC,SAAS,SAAS,SAAS,CAAC,KAAK,MAAM;CAiElD,CAAC"}
|
||||
+208
@@ -0,0 +1,208 @@
|
||||
import { mulTable, shgTable } from "./blur-tables.js";
|
||||
import { limit255 } from "@jimp/utils";
|
||||
/*
|
||||
Superfast Blur (0.5)
|
||||
http://www.quasimondo.com/BoxBlurForCanvas/FastBlur.js
|
||||
|
||||
Copyright (c) 2011 Mario Klingemann
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
export const methods = {
|
||||
/**
|
||||
* A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker
|
||||
* @param r the pixel radius of the blur
|
||||
* @example
|
||||
* ```ts
|
||||
* import { Jimp } from "jimp";
|
||||
*
|
||||
* const image = await Jimp.read("test/image.png");
|
||||
*
|
||||
* image.blur(5);
|
||||
* ```
|
||||
*/
|
||||
blur(image, r) {
|
||||
if (typeof r !== "number") {
|
||||
throw new Error("r must be a number");
|
||||
}
|
||||
if (r < 1) {
|
||||
throw new Error("r must be greater than 0");
|
||||
}
|
||||
let rsum;
|
||||
let gsum;
|
||||
let bsum;
|
||||
let asum;
|
||||
let x;
|
||||
let y;
|
||||
let i;
|
||||
let p;
|
||||
let p1;
|
||||
let p2;
|
||||
let yp;
|
||||
let yi;
|
||||
let yw;
|
||||
const wm = image.bitmap.width - 1;
|
||||
const hm = image.bitmap.height - 1;
|
||||
// const wh = image.bitmap.width * image.bitmap.height;
|
||||
const rad1 = r + 1;
|
||||
const mulSum = mulTable[r];
|
||||
const shgSum = shgTable[r];
|
||||
const red = [];
|
||||
const green = [];
|
||||
const blue = [];
|
||||
const alpha = [];
|
||||
const vmin = [];
|
||||
const vmax = [];
|
||||
let iterations = 2;
|
||||
while (iterations-- > 0) {
|
||||
yi = 0;
|
||||
yw = 0;
|
||||
for (y = 0; y < image.bitmap.height; y++) {
|
||||
rsum = image.bitmap.data[yw] * rad1;
|
||||
gsum = image.bitmap.data[yw + 1] * rad1;
|
||||
bsum = image.bitmap.data[yw + 2] * rad1;
|
||||
asum = image.bitmap.data[yw + 3] * rad1;
|
||||
for (i = 1; i <= r; i++) {
|
||||
p = yw + ((i > wm ? wm : i) << 2);
|
||||
rsum += image.bitmap.data[p++];
|
||||
gsum += image.bitmap.data[p++];
|
||||
bsum += image.bitmap.data[p++];
|
||||
asum += image.bitmap.data[p];
|
||||
}
|
||||
for (x = 0; x < image.bitmap.width; x++) {
|
||||
red[yi] = rsum;
|
||||
green[yi] = gsum;
|
||||
blue[yi] = bsum;
|
||||
alpha[yi] = asum;
|
||||
if (y === 0) {
|
||||
vmin[x] = ((p = x + rad1) < wm ? p : wm) << 2;
|
||||
vmax[x] = (p = x - r) > 0 ? p << 2 : 0;
|
||||
}
|
||||
p1 = yw + vmin[x];
|
||||
p2 = yw + vmax[x];
|
||||
rsum += image.bitmap.data[p1++] - image.bitmap.data[p2++];
|
||||
gsum += image.bitmap.data[p1++] - image.bitmap.data[p2++];
|
||||
bsum += image.bitmap.data[p1++] - image.bitmap.data[p2++];
|
||||
asum += image.bitmap.data[p1] - image.bitmap.data[p2++];
|
||||
yi++;
|
||||
}
|
||||
yw += image.bitmap.width << 2;
|
||||
}
|
||||
for (x = 0; x < image.bitmap.width; x++) {
|
||||
yp = x;
|
||||
rsum = red[yp] * rad1;
|
||||
gsum = green[yp] * rad1;
|
||||
bsum = blue[yp] * rad1;
|
||||
asum = alpha[yp] * rad1;
|
||||
for (i = 1; i <= r; i++) {
|
||||
yp += i > hm ? 0 : image.bitmap.width;
|
||||
rsum += red[yp];
|
||||
gsum += green[yp];
|
||||
bsum += blue[yp];
|
||||
asum += alpha[yp];
|
||||
}
|
||||
yi = x << 2;
|
||||
for (y = 0; y < image.bitmap.height; y++) {
|
||||
image.bitmap.data[yi] = limit255((rsum * mulSum) >>> shgSum);
|
||||
image.bitmap.data[yi + 1] = limit255((gsum * mulSum) >>> shgSum);
|
||||
image.bitmap.data[yi + 2] = limit255((bsum * mulSum) >>> shgSum);
|
||||
image.bitmap.data[yi + 3] = limit255((asum * mulSum) >>> shgSum);
|
||||
if (x === 0) {
|
||||
vmin[y] = ((p = y + rad1) < hm ? p : hm) * image.bitmap.width;
|
||||
vmax[y] = (p = y - r) > 0 ? p * image.bitmap.width : 0;
|
||||
}
|
||||
p1 = x + vmin[y];
|
||||
p2 = x + vmax[y];
|
||||
rsum += red[p1] - red[p2];
|
||||
gsum += green[p1] - green[p2];
|
||||
bsum += blue[p1] - blue[p2];
|
||||
asum += alpha[p1] - alpha[p2];
|
||||
yi += image.bitmap.width << 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return image;
|
||||
},
|
||||
// http://blog.ivank.net/fastest-gaussian-blur.html
|
||||
/**
|
||||
* Applies a true Gaussian blur to the image (warning: this is VERY slow)
|
||||
* @param r the pixel radius of the blur
|
||||
* @example
|
||||
* ```ts
|
||||
* import { Jimp } from "jimp";
|
||||
*
|
||||
* const image = await Jimp.read("test/image.png");
|
||||
*
|
||||
* image.gaussian(15);
|
||||
* ```
|
||||
*/
|
||||
gaussian(image, r) {
|
||||
if (typeof r !== "number") {
|
||||
throw new Error("r must be a number");
|
||||
}
|
||||
if (r < 1) {
|
||||
throw new Error("r must be greater than 0");
|
||||
}
|
||||
const rs = Math.ceil(r * 2.57); // significant radius
|
||||
const range = rs * 2 + 1;
|
||||
const rr2 = r * r * 2;
|
||||
const rr2pi = rr2 * Math.PI;
|
||||
const weights = [];
|
||||
for (let y = 0; y < range; y++) {
|
||||
const weightsRow = [];
|
||||
for (let x = 0; x < range; x++) {
|
||||
const dsq = (x - rs) ** 2 + (y - rs) ** 2;
|
||||
weightsRow[x] = Math.exp(-dsq / rr2) / rr2pi;
|
||||
}
|
||||
weights.push(weightsRow);
|
||||
}
|
||||
for (let y = 0; y < image.bitmap.height; y++) {
|
||||
for (let x = 0; x < image.bitmap.width; x++) {
|
||||
let red = 0;
|
||||
let green = 0;
|
||||
let blue = 0;
|
||||
let alpha = 0;
|
||||
let wsum = 0;
|
||||
for (let iy = 0; iy < range; iy++) {
|
||||
for (let ix = 0; ix < range; ix++) {
|
||||
const x1 = Math.min(image.bitmap.width - 1, Math.max(0, ix + x - rs));
|
||||
const y1 = Math.min(image.bitmap.height - 1, Math.max(0, iy + y - rs));
|
||||
const weight = weights[iy][ix];
|
||||
const idx = (y1 * image.bitmap.width + x1) << 2;
|
||||
red += image.bitmap.data[idx] * weight;
|
||||
green += image.bitmap.data[idx + 1] * weight;
|
||||
blue += image.bitmap.data[idx + 2] * weight;
|
||||
alpha += image.bitmap.data[idx + 3] * weight;
|
||||
wsum += weight;
|
||||
}
|
||||
const idx = (y * image.bitmap.width + x) << 2;
|
||||
image.bitmap.data[idx] = Math.round(red / wsum);
|
||||
image.bitmap.data[idx + 1] = Math.round(green / wsum);
|
||||
image.bitmap.data[idx + 2] = Math.round(blue / wsum);
|
||||
image.bitmap.data[idx + 3] = Math.round(alpha / wsum);
|
||||
}
|
||||
}
|
||||
}
|
||||
return image;
|
||||
},
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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 truncated
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
Reference in new issue
Block a user