Sharp
Sharp
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.
- Kesalahan Parameter tidak valid
Param | Jenis | Bawaan | Keterangan |
---|---|---|---|
jika 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. | |||
jika ada, adalah Objek dengan atribut opsional. | |||
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. | |||
Jangan 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). | |||
Setel ini ke true untuk menghapus fitur keamanan yang membantu mencegah kehabisan memori (JPEG, PNG, SVG, HEIF). | |||
Setel ini ke false untuk menggunakan akses acak, bukan pembacaan berurutan. Beberapa operasi akan melakukan ini secara otomatis. | |||
angka yang mewakili DPI untuk gambar vektor dalam rentang 1 hingga 100000. | |||
sebaiknya profil ICC yang tertanam, jika ada, diabaikan. | |||
Jumlah halaman yang akan diekstraksi untuk input multi-halaman (GIF, WebP, TIFF), gunakan -1 untuk semua halaman. | |||
Nomor halaman tempat mulai mengekstraksi untuk input multi-halaman (GIF, WebP, TIFF), berbasis nol. | |||
subIFD (Sub Image File Directory) untuk mengekstrak OME-TIFF, defaultnya adalah gambar utama. | |||
level untuk mengekstrak dari input multi-level (OpenSlide), berbasis nol. | |||
Setel ke true untuk membaca semua bingkai/halaman gambar animasi (GIF, WebP, TIFF), setara dengan menyetel halaman ke -1. | |||
menjelaskan data gambar masukan piksel mentah. Lihat raw() untuk pengurutan piksel. | |||
jumlah lebar piksel integral. | |||
jumlah piksel integral yang tinggi. | |||
jumlah saluran integral, antara 1 dan 4. | |||
menentukan bahwa masukan mentah telah diprakalikan, disetel ke true untuk menghindari prakalikan gambar secara tajam. (opsional, default salah) | |||
menggambarkan gambar baru yang akan dibuat. | |||
jumlah lebar piksel integral. | |||
jumlah piksel integral yang tinggi. | |||
jumlah saluran integral, baik 3 (RGB) atau 4 (RGBA). | |||
diuraikan oleh modul warna untuk mengekstrak nilai merah, hijau, biru dan alfa. | |||
menggambarkan kebisingan yang akan dibuat. | |||
jenis kebisingan yang dihasilkan, saat ini hanya gaussian yang didukung. | |||
rata-rata piksel dalam kebisingan yang dihasilkan. | |||
deviasi standar piksel dalam kebisingan yang dihasilkan. | |||
menjelaskan gambar teks baru yang akan dibuat. | |||
teks untuk dirender sebagai string UTF-8. Ini dapat berisi markup Pango, misalnya <i>Le</i>Monde. | |||
nama font untuk dirender. | |||
jalur sistem file absolut ke file font yang dapat digunakan oleh font. | |||
Jumlah piksel integral untuk membungkus kata. Baris teks yang lebih lebar dari ini akan terpecah pada batas kata. | |||
Jumlah 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. | |||
Gaya perataan untuk teks multi-baris ('kiri', 'tengah', 'tengah', 'kanan'). | |||
setel ini ke true untuk menerapkan pembenaran pada teks. | |||
resolusi (ukuran) untuk merender teks. Tidak berpengaruh jika ketinggian ditentukan. | |||
atur 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>. | |||
tinggi baris teks dalam poin. Akan menggunakan tinggi garis font jika tidak ada yang ditentukan. | |||
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) {}
});