📜  节点 |通用运算符()函数

📅  最后修改于: 2022-05-13 01:56:56.966000             🧑  作者: Mango

节点 |通用运算符()函数

运算符()函数是 GraphicsMagick 库中的内置函数,用于将数学、按位或值运算符应用于图像通道。如果运算结果为负,则结果被重置为零,如果运算结果溢出到可用范围,则结果被设置为最大可能值。
句法:

operator( channel, operator, rvalue[%] )

参数:该函数接受上面提到和下面描述的四个参数:

  • channel:此参数用于指定红色、绿色、蓝色、不透明度、哑光、青色、洋红色、黄色、黑色、全部或灰色的通道值。通道值All修改颜色通道,不修改通道的不透明度。
  • 运算符:该参数用于指定运算符的值。
    运算符列表及其说明如下:
    • Add: Add运算符的结果给出了与通道值相加的右值。
    • And: And运算符的结果给出右值与通道值的逻辑与。
    • 赋值:赋值运算符提供的右值形式给出结果。
    • 深度:深度运算符的结果给出了调整后的通道值,以便它可以(大约)存储在指定的位数中而不会产生额外的损失。
    • Divide: Divide运算符给出结果为通道值除以右值。
    • Gamma: Gamma运算符将结果作为由右值调整的通道值伽马。
    • LShift: Lshift运算符将结果作为通道值按位左移右值位。
    • Log: Log运算符给出计算结果为 log(value*rvalue+1)/log(rvalue+1)。
    • Max:如果 rvalue 大于 value,则 Max运算符给出分配给 rvalue 的结果。
    • Min:如果 rvalue 小于 value,则 Min运算符给出分配给 rvalue 的结果。
    • 乘法:乘法运算符以通道值乘以右值的形式给出结果。
    • 否定:取反运算符给出结果作为信道的值(如一个薄膜负)的倒数。
    • 或: 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运算符将结果作为右值与通道值的逻辑异或。
    • Noise-Gaussian: Noise-Gaussian运算符给出的结果是根据 rvalue 指定的强度用高斯噪声调制的当前通道值。
    • Noise-Impulse: Noise-Impulse运算符给出的结果是根据 rvalue 指定的强度用 Impulse 噪声调制的当前通道值。
    • Noise-Laplacian: Noise-Laplacian 算运算符给出的结果是根据 rvalue 指定的强度用 Laplacian 噪声调制的当前通道值。
    • 噪声乘法:噪声乘法运算符将结果作为根据 rvalue 指定的强度用乘法高斯噪声调制的当前通道值。
    • Noise-Poisson: Noise-Poisson运算符给出的结果是根据 rvalue 指定的强度用 Poisson 噪声调制的当前通道值。
    • 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