Menu tutorialDaftar isi di halaman ini

Konstruktor

Sharp

Sharp

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

new

new Sharp([input], [options])

Pabrik konstruktor untuk membuat instance sharp, yang mana metode selanjutnya dirantai.

Data gambar berformat JPEG, PNG, WebP, GIF, AVIF, atau TIFF dapat dialirkan dari objek ini. Saat menggunakan keluaran berbasis aliran, atribut turunan tersedia dari acara info.

Masalah non-kritis yang ditemui selama pemrosesan dikeluarkan sebagai peristiwa peringatan.

Mengimplementasikan kelas stream.Duplex.

Saat memuat lebih dari satu halaman/bingkai gambar animasi, gambar tersebut digabungkan menjadi gambar "toilet roll" yang ditumpuk secara vertikal dengan tinggi keseluruhan adalah [tinggi halaman] dikalikan dengan jumlah halaman.

Throws

  • Kesalahan Parameter tidak valid
ParamJenisBawaanKeterangan
[input]Buffer | ArrayBuffer | Uint8Array | Uint8ClampedArray | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array | stringjika ada, dapat berupa Buffer / ArrayBuffer / Uint8Array / Uint8ClampedArray yang berisi data gambar JPEG, PNG, WebP, AVIF, GIF, SVG atau TIFF, atau TypedArray yang berisi data gambar piksel mentah, atau String yang berisi jalur sistem file ke JPEG, File gambar PNG, WebP, AVIF, GIF, SVG atau TIFF. Data gambar JPEG, PNG, WebP, AVIF, GIF, SVG, TIFF, atau piksel mentah dapat dialirkan ke objek saat tidak ada.
[options]Objectjika ada, adalah Objek dengan atribut opsional.
[options.failOn]string"'warning'"Kapan harus membatalkan pemrosesan data piksel yang tidak valid, salah satu dari (dalam urutan sensitivitas, paling sedikit hingga paling banyak): 'tidak ada', 'terpotong', 'kesalahan', 'peringatan'. Tingkat yang lebih tinggi berarti tingkat yang lebih rendah. Metadata yang tidak valid akan selalu dibatalkan.
[options.limitInputPixels]number | boolean268402689Jangan memproses gambar masukan yang jumlah pikselnya (lebar x tinggi) melebihi batas ini. Mengasumsikan dimensi gambar yang terdapat dalam metadata masukan dapat dipercaya. Jumlah piksel integral, nol atau salah untuk menghilangkan batas, benar untuk menggunakan batas default 268402689 (0x3FFF x 0x3FFF).
[options.unlimited]booleanfalseSetel ini ke true untuk menghapus fitur keamanan yang membantu mencegah kehabisan memori (JPEG, PNG, SVG, HEIF).
[options.sequentialRead]booleantrueSetel ini ke false untuk menggunakan akses acak, bukan pembacaan berurutan. Beberapa operasi akan melakukan ini secara otomatis.
[options.density]number72angka yang mewakili DPI untuk gambar vektor dalam rentang 1 hingga 100000.
[options.ignoreIcc]numberfalsesebaiknya profil ICC yang tertanam, jika ada, diabaikan.
[options.pages]number1Jumlah halaman yang akan diekstraksi untuk input multi-halaman (GIF, WebP, TIFF), gunakan -1 untuk semua halaman.
[options.page]number0Nomor halaman tempat mulai mengekstraksi untuk input multi-halaman (GIF, WebP, TIFF), berbasis nol.
[options.subifd]number-1subIFD (Sub Image File Directory) untuk mengekstrak OME-TIFF, defaultnya adalah gambar utama.
[options.level]number0level untuk mengekstrak dari input multi-level (OpenSlide), berbasis nol.
[options.animated]booleanfalseSetel ke true untuk membaca semua bingkai/halaman gambar animasi (GIF, WebP, TIFF), setara dengan menyetel halaman ke -1.
[options.raw]Objectmenjelaskan data gambar masukan piksel mentah. Lihat raw() untuk pengurutan piksel.
[options.raw.width]numberjumlah lebar piksel integral.
[options.raw.height]numberjumlah piksel integral yang tinggi.
[options.raw.channels]numberjumlah saluran integral, antara 1 dan 4.
[options.raw.premultiplied]booleanmenentukan bahwa masukan mentah telah diprakalikan, disetel ke true untuk menghindari prakalikan gambar secara tajam. (opsional, default salah)
[options.create]Objectmenggambarkan gambar baru yang akan dibuat.
[options.create.width]numberjumlah lebar piksel integral.
[options.create.height]numberjumlah piksel integral yang tinggi.
[options.create.channels]numberjumlah saluran integral, baik 3 (RGB) atau 4 (RGBA).
[options.create.background]string | Objectdiuraikan oleh modul warna untuk mengekstrak nilai merah, hijau, biru dan alfa.
[options.create.noise]Objectmenggambarkan kebisingan yang akan dibuat.
[options.create.noise.type]stringjenis kebisingan yang dihasilkan, saat ini hanya gaussian yang didukung.
[options.create.noise.mean]numberrata-rata piksel dalam kebisingan yang dihasilkan.
[options.create.noise.sigma]numberdeviasi standar piksel dalam kebisingan yang dihasilkan.
[options.text]Objectmenjelaskan gambar teks baru yang akan dibuat.
[options.text.text]stringteks untuk dirender sebagai string UTF-8. Ini dapat berisi markup Pango, misalnya <i>Le</i>Monde.
[options.text.font]stringnama font untuk dirender.
[options.text.fontfile]stringjalur sistem file absolut ke file font yang dapat digunakan oleh font.
[options.text.width]number0Jumlah piksel integral untuk membungkus kata. Baris teks yang lebih lebar dari ini akan terpecah pada batas kata.
[options.text.height]number0Jumlah piksel integral maksimum tinggi. Ketika ditentukan, dpi akan diabaikan dan teks secara otomatis akan sesuai dengan resolusi piksel yang ditentukan oleh lebar dan tinggi. Akan diabaikan jika lebar tidak ditentukan atau disetel ke 0.
[options.text.align]string"'left'"Gaya perataan untuk teks multi-baris ('kiri', 'tengah', 'tengah', 'kanan').
[options.text.justify]booleanfalsesetel ini ke true untuk menerapkan pembenaran pada teks.
[options.text.dpi]number72resolusi (ukuran) untuk merender teks. Tidak berpengaruh jika ketinggian ditentukan.
[options.text.rgba]booleanfalseatur ini ke true untuk mengaktifkan output RGBA. Ini berguna untuk rendering emoji warna, atau dukungan untuk fitur markup pango seperti <span latar depan="merah">Merah!</span>.
[options.text.spacing]number0tinggi baris teks dalam poin. Akan menggunakan tinggi garis font jika tidak ada yang ditentukan.
[options.text.wrap]string"'word'"gaya pembungkusan kata ketika lebar disediakan, salah satu dari: 'word', 'char', 'word-char' (lebih memilih kata, fallback ke char) atau 'none'.

Contoh

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
  });

Contoh

// 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);

Contoh

// 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( ... );

Contoh

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

Contoh

// 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');

Contoh

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

Contoh

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

Contoh

// 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

Ambil "snapshot" dari instance Sharp, kembalikan instance baru. Instance yang dikloning mewarisi input dari instance induknya. Hal ini memungkinkan beberapa Aliran keluaran dan oleh karena itu beberapa alur pemrosesan untuk berbagi satu Aliran masukan.

Contoh

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

Contoh

// 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) {}
  });
Daftar komentar
Memuat..
Daftar isi di halaman ini