## removeAlpha Remove alpha channel, if any. This is a no-op if the image does not have an alpha channel. ### Examples ```javascript sharp('rgba.png') .removeAlpha() .toFile('rgb.png', function(err, info) { // rgb.png is a 3 channel image without an alpha channel }); ``` Returns **Sharp** ## ensureAlpha Ensure the output image has an alpha transparency channel. If missing, the added alpha channel will have the specified transparency level, defaulting to fully-opaque (1). This is a no-op if the image already has an alpha channel. ### Parameters * `alpha` **[number][1]** alpha transparency level (0=fully-transparent, 1=fully-opaque) (optional, default `1`) ### Examples ```javascript // rgba.png will be a 4 channel image with a fully-opaque alpha channel await sharp('rgb.jpg') .ensureAlpha() .toFile('rgba.png') ``` ```javascript // rgba is a 4 channel image with a fully-transparent alpha channel const rgba = await sharp(rgb) .ensureAlpha(0) .toBuffer(); ``` * Throws **[Error][2]** Invalid alpha transparency level Returns **Sharp** **Meta** * **since**: 0.21.2 ## extractChannel Extract a single channel from a multi-channel image. ### Parameters * `channel` **([number][1] | [string][3])** zero-indexed channel/band number to extract, or `red`, `green`, `blue` or `alpha`. ### Examples ```javascript sharp(input) .extractChannel('green') .toColourspace('b-w') .toFile('green.jpg', function(err, info) { // info.channels === 1 // green.jpg is a greyscale image containing the green channel of the input }); ``` * Throws **[Error][2]** Invalid channel Returns **Sharp** ## joinChannel Join one or more channels to the image. The meaning of the added channels depends on the output colourspace, set with `toColourspace()`. By default the output image will be web-friendly sRGB, with additional channels interpreted as alpha channels. Channel ordering follows vips convention: * sRGB: 0: Red, 1: Green, 2: Blue, 3: Alpha. * CMYK: 0: Magenta, 1: Cyan, 2: Yellow, 3: Black, 4: Alpha. Buffers may be any of the image formats supported by sharp. For raw pixel input, the `options` object should contain a `raw` attribute, which follows the format of the attribute of the same name in the `sharp()` constructor. ### Parameters * `images` **([Array][4]<([string][3] | [Buffer][5])> | [string][3] | [Buffer][5])** one or more images (file paths, Buffers). * `options` **[Object][6]** image options, see `sharp()` constructor. * Throws **[Error][2]** Invalid parameters Returns **Sharp** ## bandbool Perform a bitwise boolean operation on all input image channels (bands) to produce a single channel output image. ### Parameters * `boolOp` **[string][3]** one of `and`, `or` or `eor` to perform that bitwise operation, like the C logic operators `&`, `|` and `^` respectively. ### Examples ```javascript sharp('3-channel-rgb-input.png') .bandbool(sharp.bool.and) .toFile('1-channel-output.png', function (err, info) { // The output will be a single channel image where each pixel `P = R & G & B`. // If `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]` // then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`. }); ``` * Throws **[Error][2]** Invalid parameters Returns **Sharp** [1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error [3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [5]: https://nodejs.org/api/buffer.html [6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object