@jimp/plugin-gaussian
Advanced tools
Comparing version 0.5.0 to 0.6.0
@@ -32,4 +32,18 @@ "use strict"; | ||
for (var y = 0; y < this.bitmap.height; y++) { | ||
for (var x = 0; x < this.bitmap.width; x++) { | ||
var range = rs * 2 + 1; | ||
var rr2 = r * r * 2; | ||
var rr2pi = rr2 * Math.PI; | ||
var weights = []; | ||
for (var y = 0; y < range; y++) { | ||
weights[y] = []; | ||
for (var x = 0; x < range; x++) { | ||
var dsq = Math.pow(x - rs, 2) + Math.pow(y - rs, 2); | ||
weights[y][x] = Math.exp(-dsq / rr2) / rr2pi; | ||
} | ||
} | ||
for (var _y = 0; _y < this.bitmap.height; _y++) { | ||
for (var _x = 0; _x < this.bitmap.width; _x++) { | ||
var red = 0; | ||
@@ -41,19 +55,18 @@ var green = 0; | ||
for (var iy = y - rs; iy < y + rs + 1; iy++) { | ||
for (var ix = x - rs; ix < x + rs + 1; ix++) { | ||
var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix)); | ||
var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy)); | ||
var dsq = (ix - x) * (ix - x) + (iy - y) * (iy - y); | ||
var wght = Math.exp(-dsq / (2 * r * r)) / (Math.PI * 2 * r * r); | ||
for (var iy = 0; iy < range; iy++) { | ||
for (var ix = 0; ix < range; ix++) { | ||
var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix + _x - rs)); | ||
var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy + _y - rs)); | ||
var weight = weights[iy][ix]; | ||
var _idx = y1 * this.bitmap.width + x1 << 2; | ||
red += this.bitmap.data[_idx] * wght; | ||
green += this.bitmap.data[_idx + 1] * wght; | ||
blue += this.bitmap.data[_idx + 2] * wght; | ||
alpha += this.bitmap.data[_idx + 3] * wght; | ||
wsum += wght; | ||
red += this.bitmap.data[_idx] * weight; | ||
green += this.bitmap.data[_idx + 1] * weight; | ||
blue += this.bitmap.data[_idx + 2] * weight; | ||
alpha += this.bitmap.data[_idx + 3] * weight; | ||
wsum += weight; | ||
} | ||
var idx = y * this.bitmap.width + x << 2; | ||
var idx = _y * this.bitmap.width + _x << 2; | ||
this.bitmap.data[idx] = Math.round(red / wsum); | ||
@@ -60,0 +73,0 @@ this.bitmap.data[idx + 1] = Math.round(green / wsum); |
@@ -23,4 +23,18 @@ import { isNodePattern, throwError } from '@jimp/utils'; | ||
for (var y = 0; y < this.bitmap.height; y++) { | ||
for (var x = 0; x < this.bitmap.width; x++) { | ||
var range = rs * 2 + 1; | ||
var rr2 = r * r * 2; | ||
var rr2pi = rr2 * Math.PI; | ||
var weights = []; | ||
for (var y = 0; y < range; y++) { | ||
weights[y] = []; | ||
for (var x = 0; x < range; x++) { | ||
var dsq = Math.pow(x - rs, 2) + Math.pow(y - rs, 2); | ||
weights[y][x] = Math.exp(-dsq / rr2) / rr2pi; | ||
} | ||
} | ||
for (var _y = 0; _y < this.bitmap.height; _y++) { | ||
for (var _x = 0; _x < this.bitmap.width; _x++) { | ||
var red = 0; | ||
@@ -32,19 +46,18 @@ var green = 0; | ||
for (var iy = y - rs; iy < y + rs + 1; iy++) { | ||
for (var ix = x - rs; ix < x + rs + 1; ix++) { | ||
var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix)); | ||
var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy)); | ||
var dsq = (ix - x) * (ix - x) + (iy - y) * (iy - y); | ||
var wght = Math.exp(-dsq / (2 * r * r)) / (Math.PI * 2 * r * r); | ||
for (var iy = 0; iy < range; iy++) { | ||
for (var ix = 0; ix < range; ix++) { | ||
var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix + _x - rs)); | ||
var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy + _y - rs)); | ||
var weight = weights[iy][ix]; | ||
var _idx = y1 * this.bitmap.width + x1 << 2; | ||
red += this.bitmap.data[_idx] * wght; | ||
green += this.bitmap.data[_idx + 1] * wght; | ||
blue += this.bitmap.data[_idx + 2] * wght; | ||
alpha += this.bitmap.data[_idx + 3] * wght; | ||
wsum += wght; | ||
red += this.bitmap.data[_idx] * weight; | ||
green += this.bitmap.data[_idx + 1] * weight; | ||
blue += this.bitmap.data[_idx + 2] * weight; | ||
alpha += this.bitmap.data[_idx + 3] * weight; | ||
wsum += weight; | ||
} | ||
var idx = y * this.bitmap.width + x << 2; | ||
var idx = _y * this.bitmap.width + _x << 2; | ||
this.bitmap.data[idx] = Math.round(red / wsum); | ||
@@ -51,0 +64,0 @@ this.bitmap.data[idx + 1] = Math.round(green / wsum); |
{ | ||
"name": "@jimp/plugin-gaussian", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"description": "gaussian blur an image.", | ||
@@ -19,3 +19,3 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@jimp/utils": "^0.5.0", | ||
"@jimp/utils": "^0.6.0", | ||
"core-js": "^2.5.7" | ||
@@ -29,3 +29,3 @@ }, | ||
}, | ||
"gitHead": "fbbe0b7da5a9dcf8da35e2dfb2e8265ca850435c" | ||
"gitHead": "ff78c045c32a9fff55f7fd92f72fa57409126485" | ||
} |
@@ -21,3 +21,16 @@ import { isNodePattern, throwError } from '@jimp/utils'; | ||
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++) { | ||
weights[y] = []; | ||
for (let x = 0; x < range; x++) { | ||
const dsq = (x - rs) ** 2 + (y - rs) ** 2 ; | ||
weights[y][x] = Math.exp(-dsq / rr2) / rr2pi; | ||
} | ||
} | ||
for (let y = 0; y < this.bitmap.height; y++) { | ||
@@ -31,15 +44,14 @@ for (let x = 0; x < this.bitmap.width; x++) { | ||
for (let iy = y - rs; iy < y + rs + 1; iy++) { | ||
for (let ix = x - rs; ix < x + rs + 1; ix++) { | ||
const x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix)); | ||
const y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy)); | ||
const dsq = (ix - x) * (ix - x) + (iy - y) * (iy - y); | ||
const wght = Math.exp(-dsq / (2 * r * r)) / (Math.PI * 2 * r * r); | ||
for (let iy = 0; iy < range; iy++) { | ||
for (let ix = 0; ix < range; ix++) { | ||
const x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix + x - rs )); | ||
const y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy + y - rs)); | ||
const weight = weights[iy][ix]; | ||
const idx = (y1 * this.bitmap.width + x1) << 2; | ||
red += this.bitmap.data[idx] * wght; | ||
green += this.bitmap.data[idx + 1] * wght; | ||
blue += this.bitmap.data[idx + 2] * wght; | ||
alpha += this.bitmap.data[idx + 3] * wght; | ||
wsum += wght; | ||
red += this.bitmap.data[idx] * weight; | ||
green += this.bitmap.data[idx + 1] * weight; | ||
blue += this.bitmap.data[idx + 2] * weight; | ||
alpha += this.bitmap.data[idx + 3] * weight; | ||
wsum += weight; | ||
} | ||
@@ -46,0 +58,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
21362
195
+ Added@jimp/utils@0.6.8(transitive)
- Removed@jimp/utils@0.5.0(transitive)
Updated@jimp/utils@^0.6.0