チュートリアルメニューこのページの目次

画像操作

rotate

rotate([angle], [options]) ⇒ Sharp

出力画像を、明示的な角度で回転するか、EXIF 方向タグに基づいて自動方向付けします。

角度が指定されている場合は、有効な正の角度の回転に変換されます。たとえば、-450 は 270 度の回転を生成します。

90 の倍数以外の角度で回転する場合は、背景色を背景オプションで指定できます。

角度が指定されていない場合は、EXIF データから決定されます。ミラーリングがサポートされており、反転操作の使用を推測できます。

角度なしで回転を使用すると、EXIF 方向タグがある場合は削除されます。

パイプラインごとに 1 回の回転のみ実行できます。同じパイプラインで以前に行われた回転の呼び出しは無視されます。

複数ページの画像は 180 度のみ回転できます。

回転、サイズ変更、および/または領域抽出を行う場合、メソッドの順序が重要です。たとえば、[.rotate(x).extract(y)] は [.extract(y).rotate(x)] とは異なる結果を生成します。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
[angle]numberauto回転角度。
[options]Object存在する場合、オプションの属性を持つオブジェクトです。
[options.background]string | Object""#000000""カラー モジュールによって解析され、赤、緑、青、アルファの値が抽出されます。

const pipeline = sharp()
  .rotate()
  .resize(null, 200)
  .toBuffer(function (err, outputBuffer, info) {
    // outputBuffer contains 200px high JPEG image data,
    // auto-rotated using EXIF Orientation tag
    // info.width and info.height contain the dimensions of the resized image
  });
readableStream.pipe(pipeline);

const rotateThenResize = await sharp(input)
  .rotate(90)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .toBuffer();
const resizeThenRotate = await sharp(input)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .rotate(90)
  .toBuffer();

flip

flip([flip]) ⇒ Sharp

画像を x 軸を中心に垂直方向 (上下) にミラーリングします。回転がある場合は、常に回転の前に実行されます。

この操作は、複数ページの画像では正しく機能しません。

パラメータタイプデフォルト
[flip]Booleantrue

const output = await sharp(input).flip().toBuffer();

flop

flop([flop]) ⇒ Sharp

y軸を中心に画像を水平方向(左右)にミラーリングします。これは、回転が行われる前に必ず発生します (回転が行われる場合)。

パラメータタイプデフォルト
[flop]Booleantrue

const output = await sharp(input).flop().toBuffer();

affine

affine(matrix, [options]) ⇒ Sharp

画像に対してアフィン変換を実行します。この操作は、サイズ変更、抽出、回転(ある場合)の後に必ず実行されます。

長さ 4 の配列または 2x2 アフィン変換マトリックスを指定する必要があります。デフォルトでは、新しいピクセルは黒の背景で塗りつぶされます。background オプションを使用して背景色を指定できます。特定の補間を指定することもできます。補間オプションを sharp.interpolators オブジェクトの属性に設定します(例: sharp.interpolators.nohalo)。

2x2 マトリックスの場合、変換は次のようになります。

  • X = matrix[0, 0] * (x + idx) + matrix[0, 1] * (y + idy) + odx
  • Y = matrix[1, 0] * (x + idx) + matrix[1, 1] * (y + idy) + ody

ここで、

  • x と y は入力イメージの座標です。
  • X と Y は出力画像内の座標です。
  • (0,0) は左上隅です。

Throws:

  • エラー 無効なパラメータ

以降: 0.27.0

パラメータタイプデフォルト説明
matrixArray.アフィン変換行列
[options]Object存在する場合、オプションの属性を持つオブジェクトです。
[options.background]String | Object"#000000"カラー モジュールによって解析され、赤、緑、青、アルファの値が抽出されます。
[options.idx]Number0入力水平オフセット
[options.idy]Number0入力垂直オフセット
[options.odx]Number0出力水平オフセット
[options.ody]Number0出力垂直オフセット
[options.interpolator]Stringsharp.interpolators.bicubic補間器

const pipeline = sharp()
  .affine([[1, 0.3], [0.1, 0.7]], {
     background: 'white',
     interpolator: sharp.interpolators.nohalo
  })
  .toBuffer((err, outputBuffer, info) => {
     // outputBuffer contains the transformed image
     // info.width and info.height contain the new dimensions
  });

inputStream
  .pipe(pipeline);

sharpen

sharpen([options], [flat], [jagged]) ⇒ Sharp

画像をシャープにします。

パラメータなしで使用すると、出力画像を高速かつ穏やかにシャープにします。

シグマが指定されている場合は、LAB カラー スペースで L チャネルのシャープニングをより低速で正確に実行します。「平坦な」(m1) 領域と「ギザギザの」(m2) 領域でのシャープニング レベルを細かく制御できます。

libvips シャープニング操作を参照してください。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
[options]Object | number存在する場合、次のオブジェクトです属性
[options.sigma]numberガウスマスクのシグマ。シグマ = 1 + 半径 / 2、0.000001 から 10 の間
[options.m1]number1.0「平坦」な領域に適用するシャープニングのレベル。0 から 1000000 まで
[options.m2]number2.0「ギザギザ」な領域に適用するシャープニングのレベル。0 から 1000000 まで
[options.x1]number2.0「平坦」と「ギザギザ」の間のしきい値。0 から1000000
[options.y2]number10.0明るさの最大量、0~1000000
[options.y3]number20.0暗くする最大量、0~ 1000000
[flat]number(非推奨) options.m1 を参照してください。
[jagged]number(非推奨) options.m2 を参照してください。

const data = await sharp(input).sharpen().toBuffer();

const data = await sharp(input).sharpen({ sigma: 2 }).toBuffer();

const data = await sharp(input)
  .sharpen({
    sigma: 2,
    m1: 0,
    m2: 3,
    x1: 3,
    y2: 15,
    y3: 15,
  })
  .toBuffer();

median

median([size]) ⇒ Sharp

中央値フィルターを適用します。パラメータなしで使用する場合、デフォルトのウィンドウは 3x3 です。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
[size]number3正方形マスクのサイズ: サイズ xサイズ

const output = await sharp(input).median().toBuffer();

const output = await sharp(input).median(5).toBuffer();

blur

blur([sigma]) ⇒ Sharp

画像をぼかします。

パラメータなしで使用すると、高速 3x3 ボックスぼかし (ボックス線形フィルタと同等) を実行します。

シグマが指定されている場合は、より低速でより正確なガウスぼかしを実行します。

Throws:

  • エラー 無効なパラメータ
パラメータタイプ説明
[sigma]numberガウスマスクのシグマを表す 0.3 から 1000 までの値。シグマ = 1 + 半径 / 2.

const boxBlurred = await sharp(input)
  .blur()
  .toBuffer();

const gaussianBlurred = await sharp(input)
  .blur(5)
  .toBuffer();

flatten

flatten([options]) ⇒ Sharp

アルファ透明度チャンネルがある場合は、背景と結合してからアルファチャンネルを削除します。

removeAlpha も参照してください。

パラメータタイプデフォルト説明
[options]Object
[options.background]string | Object"{r: 0, g: 0, b: 0}"背景色、色によって解析されます モジュール、デフォルトは黒です。

await sharp(rgbaInput)
  .flatten({ background: '#F0A703' })
  .toBuffer();

unflatten

unflatten()

画像にアルファ チャネルがあり、すべての白のピクセル値が完全に透明になっていることを確認します。

白以外のピクセルの既存のアルファ チャネル値は変更されません。

この機能は実験的なものであり、API は変更される可能性があります。

: 0.32.1 以降

await sharp(rgbInput)
  .unflatten()
  .toBuffer();

await sharp(rgbInput)
  .threshold(128, { grayscale: false }) // converter bright pixels to white
  .unflatten()
  .toBuffer();

gamma

gamma([gamma], [gammaOut]) ⇒ Sharp

ガンマ補正を適用するには、サイズ変更前のエンコード (暗くする) を 1/ガンマの係数で減らし、サイズ変更後のエンコード (明るくする) をガンマの係数で増やします。これにより、非線形色空間でサイズ変更された画像の明るさが向上します。JPEG および WebP 入力画像は、ガンマ補正を適用しても、読み込み時の縮小パフォーマンスの最適化は利用できません。

異なる出力ガンマ値を使用するには 2 番目の引数を指定します。指定しない場合は、どちらの場合も最初の値が使用されます。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
[gamma]number2.21.0 から 3.0 の間の値。
[gammaOut]number1.0 から 3.0 の間の値。(オプション、デフォルトはガンマと同じ)

negate

negate([options]) ⇒ Sharp

画像の「ネガ」を生成します。

パラメータタイプデフォルト説明
[options]Object
[options.alpha]Booleantrueアルファを否定するかどうかチャネル

const output = await sharp(input)
  .negate()
  .toBuffer();

const output = await sharp(input)
  .negate({ alpha: false })
  .toBuffer();

normalise

normalise([options]) ⇒ Sharp

出力画像の輝度を拡張してダイナミック レンジ全体をカバーするようにすることで、コントラストを強化します。

ヒストグラム ベースのアプローチを使用し、1% から 99% のデフォルト範囲を使用して、極端なノイズに対する感度を低減します。

輝度値が下限パーセンタイルを下回ると、ゼロにクリッピングされて露出不足になります。上限パーセンタイルを超える輝度値は、最大ピクセル値にクリッピングされて露出オーバーになります。

パラメータタイプデフォルト説明
[options]Object
[options.lower]number1このパーセンタイルより低い輝度値は露出不足になります。
[options.upper]number99輝度値が露出オーバーになるパーセンタイル。

const output = await sharp(input)
  .normalise()
  .toBuffer();

const output = await sharp(input)
  .normalise({ lower: 0, upper: 100 })
  .toBuffer();

normalize

normalize([options]) ⇒ Sharp

normalise の別のスペル。

パラメータタイプデフォルト説明
[options]Object
[options.lower]number1このパーセンタイルより低い輝度値は露出不足になります。
[options.upper]number99輝度値が露出オーバーになるパーセンタイル。

const output = await sharp(input)
  .normalize()
  .toBuffer();

clahe

clahe(options) ⇒ Sharp

コントラスト制限適応ヒストグラム均等化 CLAHE を実行します。

これにより、一般に暗い詳細が強調され、画像の鮮明度が向上します。

Throws:

  • エラー 無効なパラメータ

以降: 0.28.3

パラメータタイプデフォルト説明
optionsObject
options.widthnumber検索ウィンドウの整数幅(ピクセル単位)。
options.heightnumber検索ウィンドウの整数の高さ (ピクセル単位)。
[options.maxSlope]number3明るさの整数レベル (0 から 100 まで)。0 はコントラスト制限を無効にします。

const output = await sharp(input)
  .clahe({
    width: 3,
    height: 3,
  })
  .toBuffer();

convolve

convolve(kernel) ⇒ Sharp

指定されたカーネルで画像を畳み込みます。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
kernelObject
kernel.widthnumberカーネルの幅(ピクセル単位)。
kernel.heightnumberカーネルの高さ(ピクセル単位)。
kernel.kernelArray.カーネル値を含む幅*高さの長さの配列。
[kernel.scale]numbersumカーネルのスケール(ピクセル単位)。
[kernel.offset]number0カーネルのオフセット(ピクセル単位)。

sharp(input)
  .convolve({
    width: 3,
    height: 3,
    kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1]
  })
  .raw()
  .toBuffer(function(err, data, info) {
    // data contains the raw pixel data representing the convolution
    // of the input image with the horizontal Sobel operator
  });

threshold

threshold([threshold], [options]) ⇒ Sharp

しきい値以上のピクセル値は 255 に設定され、それ以外の場合は 0 に設定されます。

Throws:

  • エラー 無効パラメータ
パラメータタイプデフォルト説明
[threshold]number128しきい値が適用されるレベルを表す 0 ~ 255 の範囲の値。
[options]Object
[options.greyscale]Booleantrueシングル チャネル グレースケールに変換します。
[options.grayscale]Booleantrueグレースケールの代替スペル。

boolean

boolean(オペランド、演算子、[オプション]) ⇒ Sharp

オペランド画像を使用してビット単位のブール演算を実行します。

この演算により、各ピクセルが入力画像の対応するピクセル間の選択されたビット単位のブール演算の結果である出力画像が作成されます。

Throws:

  • エラー 無効なパラメータ
パラメータタイプ説明
operandBuffer | string画像データまたは画像ファイルへのパスを含む文字列を含むバッファ。
operatorstringC 論理演算子 &、` のように、ビット単位の演算を実行するための and、or、または eor のいずれか
[options]Object
[options.raw]Object生のピクセル データを使用する場合のオペランドについて説明します。
[options.raw.width]number
[options.raw.height]number
[options.raw.channels]number

linear

linear([a], [b]) ⇒ Sharp

画像レベルを調整するには、線形式 a * input + b を画像に適用します。

単一の数値を指定すると、すべての画像チャネルに使用されます。数値の配列を指定する場合、配列の長さはチャネル数と一致する必要があります。

Throws:

  • エラー 無効なパラメータ
パラメータタイプデフォルト説明
[a]number | Array.[]乗数
[b]number | Array.[]オフセット

await sharp(input)
  .linear(0.5, 2)
  .toBuffer();

await sharp(rgbInput)
  .linear(
    [0.25, 0.5, 0.75],
    [150, 100, 50]
  )
  .toBuffer();

recomb

recomb(inputMatrix) ⇒ Sharp

指定されたマトリックスで画像を再結合します。

Throws:

  • エラー 無効なパラメータ

以降: 0.21.1

パラメータタイプ説明
inputMatrixArray.3x3 組み換えマトリックス

sharp(input)
  .recomb([
   [0.3588, 0.7044, 0.1368],
   [0.2990, 0.5870, 0.1140],
   [0.2392, 0.4696, 0.0912],
  ])
  .raw()
  .toBuffer(function(err, data, info) {
    // data contains the raw pixel data after applying the matrix
    // With this example input, a sepia filter has been applied
  });

modulate

modulate([options]) ⇒ Sharp

明るさ、彩度、色相回転、明度を使用して画像を変換します。明るさと明度はどちらも輝度に作用しますが、明るさは乗算であるのに対し、明度は加算であるという違いがあります。

: 0.22.1

パラメータタイプ説明
[options]Object
[options.brightness]number明るさ乗数
[options.saturation]number彩度乗数
[options.hue]number色相回転の度数
[options.lightness]number明度加数

// increase brightness by a factor of 2
const output = await sharp(input)
  .modulate({
    brightness: 2
  })
  .toBuffer();

// hue-rotate by 180 degrees
const output = await sharp(input)
  .modulate({
    hue: 180
  })
  .toBuffer();

// increase lightness by +50
const output = await sharp(input)
  .modulate({
    lightness: 50
  })
  .toBuffer();

// decrease brightness and saturation while also hue-rotating by 90 degrees
const output = await sharp(input)
  .modulate({
    brightness: 0.5,
    saturation: 0.5,
    hue: 90,
  })
  .toBuffer();
コメント一覧
読み込み中..