Node.js 通用运算符()函数
运算符()函数是 GraphicsMagick 库中的一个内置函数,用于将数学、位或值运算符应用于图像通道。如果运算结果为负,则将结果重置为零,如果运算结果溢出到可用范围,则将结果设置为最大可能值。
句法:
operator( channel, operator, rvalue[%] )
参数:此函数接受上面提到的四个参数,如下所述:
- 通道:此参数用于从红色、绿色、蓝色、不透明度、哑光、青色、洋红色、黄色、黑色、全部或灰色中指定通道的值。通道值All修改颜色通道,不修改通道的不透明度。
- 运算符:该参数用于指定运算符的值。
运算符列表及其说明如下:- Add: Add运算符的结果给出了添加到通道值的右值。
- And: And运算符的结果给出了右值与通道值的逻辑与。
- 赋值:赋值运算符将结果作为提供的右值给出。
- Depth: Depth运算符的结果给出了调整后的通道值,以便它可以(大约)存储在指定的位数中而不会产生额外的损失。
- Divide: Divide运算符将结果作为通道值除以右值给出。
- Gamma: Gamma运算符将结果作为由右值调整的通道值 gamma。
- LShift: Lshift运算符将结果作为通道值按位左移右值位。
- Log: Log运算符给出计算结果为 log(value*rvalue+1)/log(rvalue+1)。
- Max:如果 rvalue 大于 value,则 Max运算符给出分配给 rvalue 的结果。
- Min:如果右值小于值,则 Min运算符给出分配给右值的结果。
- 乘:乘运算符将结果作为通道值乘以右值给出。
- 否定:否定运算符将结果作为通道值的倒数(如胶片负片)。
- 或: OR运算符将结果作为右值与通道值的逻辑或。
- Pow: pow运算符给出计算为 pow(value,rvalue) 的结果。
- Rshift: rshift运算符将结果作为通道值按位右移右值位。
- 减法:减法运算符将结果作为通道值减去右值。
- 阈值:如果通道值大于右值,阈值运算符将结果作为最大值(白色),如果小于或等于右值,则将结果作为最小值(黑色)。
- 阈值白:如果通道值大于右值,阈值白运算符将结果作为最大值(白色),如果小于或等于右值,则结果不变。
- Threshold-White-Negate:如果通道值大于 rvalue,则 Threshold-white-negate运算符将结果设置为黑色,如果通道值小于或等于 rvalue,则结果不变。
- Threshold-black:如果通道值小于 rvalue,则 Threshold-black运算符将结果作为最小值(黑色),如果大于或等于 rvalue,则保持不变。
- Threshold-Black-Negate:如果通道值小于 rvalue,则 Threshold-black-negate运算符将结果设置为白色,如果通道值大于或等于 rvalue,则结果不变。
- Xor: XOR运算符将结果作为右值与通道值的逻辑 XOR。
- Noise-Gaussian: Noise-Gaussian运算符根据 rvalue 指定的强度将结果作为用高斯噪声调制的当前通道值。
- Noise-Impulse: Noise-Impulse运算符根据 rvalue 指定的强度将结果作为用 Impulse 噪声调制的当前通道值。
- 噪声-拉普拉斯算子:噪声-拉普拉斯运算符子根据右值指定的强度将结果作为用拉普拉斯噪声调制的当前通道值。
- 噪声乘法:噪声乘法运算符将结果作为当前通道值,根据右值指定的强度用乘法高斯噪声调制。
- Noise-Poisson: Noise-Poisson运算符根据 rvalue 指定的强度将结果作为用泊松噪声调制的当前通道值。
- Noise-Random: Noise-Random运算符根据 rvalue 指定的强度将结果作为用随机(均匀分布)噪声调制的当前通道值给出。
- Noise-Uniform: Noise-Uniform运算符将结果作为通道值,根据 rvalue 指定的强度应用均匀噪声。
- rvalue:此参数用于指定浮点数或整数值范围内的值。通常,右值将在 0 到 MaxRGB 的范围内,其中 MaxRGB 是 GraphicsMagick 构建支持的最大量子值(255、65535 或 4294967295),但超出此范围的值对于某些算术运算很有用。参数值在使用前四舍五入为正整数值。如果我们添加一个百分比 (%) 符号,那么参数的范围是 0 到 100。
返回值:此函数返回 GraphicsMagick 对象。
示例 1:
javascript
// Include gm library
var gm = require('gm');
// Import the image
gm('1.png')
// Invoke operator function with
// Channel as 'Green', Operator
// as 'And' and rValue(%) as 55
.operator('Green', 'And', 55, true)
// Process and Write the image
.write("operator-and1.png", function (err) {
if (!err) console.log('done');
});
javascript
// Include gm library
var gm = require('gm');
// Import the image
gm('1.png')
// Invoke operator function with
// Channel as 'Green', Operator
// as 'Divide' and rValue(%) as 55
.operator('Green','Divide',10,true)
// Process and Write the image
.write("operator-divide1.png", function (err) {
if (!err) console.log('done');
});
javascript
// Include gm library
var gm = require('gm');
// Import the image
gm(600, 300, 'white')
// Set the color for the stroke
.stroke("green", 3)
// Set the font
.font("Helvetica.ttf", 60)
// Call to drawText Function
.drawText(100, 280, "GeeksforGeeks!")
// Invoke operator function with
// Channel as 'Green', Operator as
// 'Assign' and rValue(%) as 35
.operator('Green', 'Assign', 35, true)
// Process and write the image
.write("operator-assign2.png", function (err) {
if (!err) console.log('done');
});
输出:
示例 2:
javascript
// Include gm library
var gm = require('gm');
// Import the image
gm('1.png')
// Invoke operator function with
// Channel as 'Green', Operator
// as 'Divide' and rValue(%) as 55
.operator('Green','Divide',10,true)
// Process and Write the image
.write("operator-divide1.png", function (err) {
if (!err) console.log('done');
});
输出:
示例 3:
javascript
// Include gm library
var gm = require('gm');
// Import the image
gm(600, 300, 'white')
// Set the color for the stroke
.stroke("green", 3)
// Set the font
.font("Helvetica.ttf", 60)
// Call to drawText Function
.drawText(100, 280, "GeeksforGeeks!")
// Invoke operator function with
// Channel as 'Green', Operator as
// 'Assign' and rValue(%) as 35
.operator('Green', 'Assign', 35, true)
// Process and write the image
.write("operator-assign2.png", function (err) {
if (!err) console.log('done');
});
输出:
参考:
- http://www.graphicsmagick.org/GraphicsMagick.html#details-operator
- https://www.npmjs.com/package/gm