Menu samouczkaSpis treści na tej stronie

Konstruktor

Sharp

Sharp

Emits: Sharp#event:info, Sharp#event:warning

new

new Sharp([input], [options])

Fabryka konstruktorów, aby utworzyć instancję Sharp, do której przykute są dalsze metody.

Z tego obiektu można przesyłać strumieniowo dane obrazu w formacie JPEG, PNG, WebP, GIF, AVIF lub TIFF. W przypadku korzystania z danych wyjściowych opartych na strumieniu atrybuty pochodne są dostępne w zdarzeniu info.

Niekrytyczne problemy napotkane podczas przetwarzania są emitowane jako zdarzenia ostrzegawcze.

Implementuje klasę stream.Duplex.

Podczas ładowania więcej niż jednej strony/ramki animowanego obrazu, są one łączone w pionowo ułożony obraz „na rolce papieru toaletowego”, którego całkowita wysokość to [pageHeight] pomnożona przez liczbę stron.

Throws

  • Błąd Nieprawidłowe parametry
ParametrTypDomyślnyOpis
[input]Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array | stringjeśli jest obecny, może to być obiekt Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray zawierający dane obrazu JPEG, PNG, WebP, AVIF, GIF, SVG lub TIFF lub obiekt TypedArray zawierający dane obrazu w surowych pikselach lub ciąg znaków zawierający ścieżkę systemu plików do pliku JPEG, Plik obrazu PNG, WebP, AVIF, GIF, SVG lub TIFF. Dane obrazu w formacie JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF lub nieprzetworzone pikselowe można przesyłać strumieniowo do obiektu, jeśli go nie ma.
[options]Objectjeśli jest obecny, jest obiektem z opcjonalnymi atrybutami.
[options.failOn]string"'warning'"Kiedy przerwać przetwarzanie nieprawidłowych danych pikseli, wybierz jedną z opcji (w kolejności czułości od najmniejszej do największej): „brak”, „obcięty”, „błąd”, „ostrzeżenie”. Wyższe poziomy oznaczają niższe poziomy. Nieprawidłowe metadane zawsze zostaną przerwane.
[options.limitInputPixels]number | boolean268402689Nie przetwarzaj obrazów wejściowych, których liczba pikseli (szerokość x wysokość) przekracza ten limit. Zakłada, że można ufać wymiarom obrazu zawartym w metadanych wejściowych. Całkowita liczba pikseli, zero lub fałsz, aby usunąć limit, prawda, aby użyć domyślnego limitu wynoszącego 268402689 (0x3FFF x 0x3FFF).
[options.unlimited]booleanfalseUstaw tę opcję na true, aby usunąć funkcje bezpieczeństwa, które pomagają zapobiegać wyczerpaniu pamięci (JPEG, PNG, SVG, HEIF).
[options.sequentialRead]booleantrueUstaw tę opcję na false, aby używać dostępu losowego zamiast odczytu sekwencyjnego. Niektóre operacje wykonają to automatycznie.
[options.density]number72liczba reprezentująca DPI dla obrazów wektorowych w zakresie od 1 do 100000.
[options.ignoreIcc]numberfalseczy osadzony profil ICC, jeśli istnieje, powinien zostać zignorowany.
[options.pages]number1Liczba stron do wyodrębnienia w przypadku wprowadzania wielostronicowego (GIF, WebP, TIFF), użyj -1 dla wszystkich stron.
[options.page]number0Numer strony, od której należy rozpocząć wyodrębnianie w przypadku wprowadzania danych wielostronicowych (GIF, WebP, TIFF), liczony od zera.
[options.subifd]number-1subIFD (katalog plików obrazów podrzędnych) do wyodrębnienia dla OME-TIFF, domyślnie jest to obraz główny.
[options.level]number0poziom do wyodrębnienia z wielopoziomowego wejścia (OpenSlide), w oparciu o zero.
[options.animated]booleanfalseUstaw na true, aby odczytać wszystkie klatki/strony animowanego obrazu (GIF, WebP, TIFF), co jest równoznaczne z ustawieniem stron na -1.
[options.raw]Objectopisuje surowe dane wejściowe obrazu pikseli. Zobacz raw(), aby zapoznać się z kolejnością pikseli.
[options.raw.width]numbercałkowita liczba pikseli szerokości.
[options.raw.height]numbercałkowita liczba pikseli wysoka.
[options.raw.channels]numbercałkowita liczba kanałów, od 1 do 4.
[options.raw.premultiplied]booleanokreśla, że surowe dane wejściowe zostały już wstępnie pomnożone; ustaw na true, aby uniknąć ostrego wstępnego mnożenia obrazu. (opcjonalnie, domyślnie false)
[options.create]Objectopisuje nowy obraz, który ma zostać utworzony.
[options.create.width]numbercałkowita liczba pikseli szerokości.
[options.create.height]numbercałkowita liczba pikseli wysoka.
[options.create.channels]numbercałkowita liczba kanałów: 3 (RGB) lub 4 (RGBA).
[options.create.background]string | Objectanalizowane przez moduł koloru w celu wyodrębnienia wartości koloru czerwonego, zielonego, niebieskiego i alfa.
[options.create.noise]Objectopisuje dźwięk, który ma zostać wytworzony.
[options.create.noise.type]stringrodzaj generowanego szumu, obecnie obsługiwany jest tylko gaussowski.
[options.create.noise.mean]numberśrednia pikseli w generowanym szumie.
[options.create.noise.sigma]numberodchylenie standardowe pikseli w generowanym szumie.
[options.text]Objectopisuje nowy obraz tekstowy, który ma zostać utworzony.
[options.text.text]stringtekst do renderowania jako ciąg UTF-8. Może zawierać znaczniki Pango, na przykład <i>Le</i>Monde.
[options.text.font]stringnazwa czcionki do renderowania.
[options.text.fontfile]stringbezwzględna ścieżka systemu plików do pliku czcionki, którego może używać czcionka.
[options.text.width]number0Całkowita liczba pikseli do zawijania słów. Wiersze tekstu szersze niż ten zostaną przerwane na granicach wyrazów.
[options.text.height]number0Maksymalna całkowita liczba pikseli. Po zdefiniowaniu wartość dpi będzie ignorowana, a tekst automatycznie dopasuje się do rozdzielczości pikseli określonej przez szerokość i wysokość. Zostanie zignorowany, jeśli szerokość nie zostanie określona lub ustawiona na 0.
[options.text.align]string"'left'"Styl wyrównania tekstu wielowierszowego („do lewej”, „do środka”, „do środka”, „do prawej”).
[options.text.justify]booleanfalseustaw tę opcję na true, aby zastosować wyrównanie do tekstu.
[options.text.dpi]number72rozdzielczość (rozmiar), w której renderowany jest tekst. Nie działa, jeśli określono wysokość.
[options.text.rgba]booleanfalseustaw tę wartość na true, aby włączyć wyjście RGBA. Jest to przydatne do renderowania kolorowych emoji lub obsługi funkcji znaczników pango, takich jak <span foreground="red">Red!</span>.
[options.text.spacing]number0wysokość linii tekstu w punktach. Użyje wysokości linii czcionki, jeśli nie została określona.
[options.text.wrap]string"'word'"styl zawijania słów, jeśli podana jest szerokość, jeden z: „word”, „char”, „word-char” (preferuj słowo, powrót do char) lub „none”.

Przykład

sharp('input.jpg')
  .resize(300, 200)
  .toFile('output.jpg', function(err) {
    // output.jpg is a 300 pixels wide and 200 pixels high image
    // containing a scaled and cropped version of input.jpg
  });

Przykład

// Read image data from remote URL,
// resize to 300 pixels wide,
// emit an 'info' event with calculated dimensions
// and finally write image data to writableStream
const { body } = fetch('https://...');
const readableStream = Readable.fromWeb(body);
const transformer = sharp()
  .resize(300)
  .on('info', ({ height }) => {
    console.log(`Image height is ${height}`);
  });
readableStream.pipe(transformer).pipe(writableStream);

Przykład

// Create a blank 300x200 PNG image of semi-translucent red pixels
sharp({
  create: {
    width: 300,
    height: 200,
    channels: 4,
    background: { r: 255, g: 0, b: 0, alpha: 0.5 }
  }
})
.png()
.toBuffer()
.then( ... );

Przykład

// Convert an animated GIF to an animated WebP
await sharp('in.gif', { animated: true }).toFile('out.webp');

Przykład

// Read a raw array of pixels and save it to a png
const input = Uint8Array.from([255, 255, 255, 0, 0, 0]); // or Uint8ClampedArray
const image = sharp(input, {
  // because the input does not contain its dimensions or how many channels it has
  // we need to specify it in the constructor options
  raw: {
    width: 2,
    height: 1,
    channels: 3
  }
});
await image.toFile('my-two-pixels.png');

Przykład

// Generate RGB Gaussian noise
await sharp({
  create: {
    width: 300,
    height: 200,
    channels: 3,
    noise: {
      type: 'gaussian',
      mean: 128,
      sigma: 30
    }
 }
}).toFile('noise.png');

Przykład

// Generate an image from text
await sharp({
  text: {
    text: 'Hello, world!',
    width: 400, // max width
    height: 300 // max height
  }
}).toFile('text_bw.png');

Przykład

// Generate an rgba image from text using pango markup and font
await sharp({
  text: {
    text: '<span foreground="red">Red!</span><span background="cyan">blue</span>',
    font: 'sans',
    rgba: true,
    dpi: 300
  }
}).toFile('text_rgba.png');

clone

clone() ⇒ Sharp

Zrób „migawkę” instancji Sharp, zwracając nową instancję. Sklonowane instancje dziedziczą dane wejściowe swojej instancji nadrzędnej. Dzięki temu wiele strumieni wyjściowych, a tym samym wiele potoków przetwarzania, może współdzielić pojedynczy strumień wejściowy.

Przykład

const pipeline = sharp().rotate();
pipeline.clone().resize(800, 600).pipe(firstWritableStream);
pipeline.clone().extract({ left: 20, top: 20, width: 100, height: 100 }).pipe(secondWritableStream);
readableStream.pipe(pipeline);
// firstWritableStream receives auto-rotated, resized readableStream
// secondWritableStream receives auto-rotated, extracted region of readableStream

Przykład

// Create a pipeline that will download an image, resize it and format it to different files
// Using Promises to know when the pipeline is complete
const fs = require("fs");
const got = require("got");
const sharpStream = sharp({ failOn: 'none' });

const promises = [];

promises.push(
  sharpStream
    .clone()
    .jpeg({ quality: 100 })
    .toFile("originalFile.jpg")
);

promises.push(
  sharpStream
    .clone()
    .resize({ width: 500 })
    .jpeg({ quality: 80 })
    .toFile("optimized-500.jpg")
);

promises.push(
  sharpStream
    .clone()
    .resize({ width: 500 })
    .webp({ quality: 80 })
    .toFile("optimized-500.webp")
);

// https://github.com/sindresorhus/got/blob/main/documentation/3-streams.md
got.stream("https://www.example.com/some-file.jpg").pipe(sharpStream);

Promise.all(promises)
  .then(res => { console.log("Done!", res); })
  .catch(err => {
    console.error("Error processing files, let's clean it up", err);
    try {
      fs.unlinkSync("originalFile.jpg");
      fs.unlinkSync("optimized-500.jpg");
      fs.unlinkSync("optimized-500.webp");
    } catch (e) {}
  });
Lista komentarzy
Załadunek..
Spis treści na tej stronie