Replace color multicolor with another one pixel by pixel.
npm install replace-color-multicolorreplace-color-multicolor was fork replace-color for add function multicolor and delta and Testcase already
``sh`
npm install --save replace-color-multicolor
replace-color-multicolor supports both Node.js error-first callbacks and promises. The package returns a Jimp's instance which you can use to execute some other image manipulations methods or save it with Jimp's write method.
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: './input.jpg',
colors: [{
type: 'hex',
targetColor: '#FF0000',
replaceColor: '#FFFFFF'
}]
}, (err, jimpObject) => {
if (err) return console.log(err)
jimpObject.write('./output.jpg', (err) => {
if (err) return console.log(err)
})
})
`
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: './input.jpg',
colors: [{
type: 'hex',
targetColor: '#FF0000',
replaceColor: '#FFFFFF'
}]
})
.then((jimpObject) => {
jimpObject.write('./output.jpg', (err) => {
if (err) return console.log(err)
})
})
.catch((err) => {
console.log(err)
})
`
options Object (required)* - the options.
image Buffer | Object | String (required)* - an image being processed. It can be a buffer, Jimp's instance, a path to an image on your host machine or a URL address to an image on the internet. Please, take a look at the tests to understand all these options.
colors Object (required)* - the colors.
type String (required)* - a targetColor and replaceColor type. Supported values are hex and rgb.targetColor
String | Array (required)* - a color you want to replace. A 7-symbol string in case of hex type (e.g. #000000, #FFFFFF). An array of 3 integers from 0 to 255 in case of rgb type (e.g. [0, 0, 0], [255, 255, 255]).replaceColor
String | Array (required)* - a new color which will be used instead of a targetColor color. A 7-symbol string in case of hex type (e.g. #000000, #FFFFFF). An array of 3 integers from 0 to 255 in case of rgb type (e.g. [0, 0, 0], [255, 255, 255]). You can also define a transparent channel for a replaceColor color. To achieve this, you can use a 9-symbol string in case of hex type (e.g. #00000000, #FFFFFFFF). Based on this Stack Overflow answer, an alpha channel is controlled by the first pair of digits in a hex code (e.g., 00 means fully transparent, 7F means 50%, FF means fully opaque). Also, you can use an array of 4 integers in case of rgb type. The first 3 integers must be from 0 to 255 and the last one must be from 0 to 1 (e.g., 0 means fully transparent, 0.5 means 50%, 1 means fully opaque).formula
String (optional)* - one of the three formulas to calculate the color difference. Supported values are E76, E94 and E00. The default value is E00 (the best algorithm).deltaE
Number (optional)* - a deltaE value which corresponds to a JND. The default value is 2.3. Please, read more about deltaE here. Generaly speaking, if the processed by the replace-color package image still has the watermarks, you should increase the deltaE value.callback
Function (optional)* - a Node.js error-first callback.
Let's try to remove a watermark from this picture.
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: 'https://i.imgur.com/XqNTuzp.jpg',
colors: {
type: 'hex',
targetColor: '#FFB3B7',
replaceColor: '#FFFFFF'
},
deltaE: 20
})
.then((jimpObject) => {
jimpObject.write('./output.jpg', (err) => {
if (err) return console.log(err)
})
})
.catch((err) => {
console.log(err)
})
`
#### Result
!Example
Let's try to change a background color for this picture.
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: 'https://i.imgur.com/aCxZpaq.png',
colors: {
type: 'hex',
targetColor: '#66AE74',
replaceColor: '#63A4FF'
},
deltaE: 10
})
.then((jimpObject) => {
jimpObject.write('./output.png', (err) => {
if (err) return console.log(err)
})
})
.catch((err) => {
console.log(err)
})
`
#### Result
!Example
Let's try to change a background color for this picture.
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: 'https://i.imgur.com/aCxZpaq.png',
colors: {
type: 'hex',
targetColor: '#66AE74',
replaceColor: '#00000000'
},
deltaE: 10
})
.then((jimpObject) => {
jimpObject.write('./output.png', (err) => {
if (err) return console.log(err)
})
})
.catch((err) => {
console.log(err)
})
`
#### Result
!Example
Let's try to change a background color for this picture.
`javascript
const replaceColor = require('replace-color')
replaceColor({
image: 'https://i.imgur.com/aCxZpaq.png',
colors: {
type: 'rgb',
targetColor: [102, 174, 116],
replaceColor: [102, 174, 116, 0.5]
},
deltaE: 10
})
.then((jimpObject) => {
jimpObject.write('./output.png', (err) => {
if (err) return console.log(err)
})
})
.catch((err) => {
console.log(err)
})
`
#### Result
!Example
To indicate the replace-color's errors you should use the err instanceof replaceColor.ReplaceColorError class.
`javascript`
replaceColor({}, (err, jimpObject) => {
if (err instanceof replaceColor.ReplaceColorError) {
// A replace-color's error occurred.
} else if (err) {
// An unknown error occurred.
}
// Everything went fine.
})
A replace-color's error instance has the code and field properties. For now, the package has two codes: PARAMETER_INVALID and PARAMETER_REQUIRED. The field property shows which exact property was not passed or is invalid using the glob notation (e.g. options.colors.type`). Please, take a look at the tests to see all the possible cases.