输出选项
toFile
将输出的图像数据写入文件。
如果没有选择显式的输出格式,将从扩展中推断出来,支持 JPEG、 PNG、 WebP、 AVIF、 TIFF、 GIF、 DZI 和 libvips 的 V 格式。注意,原始像素数据仅支持缓冲输出。
默认情况下,所有元数据将被删除,其中包括基于 exif 的方向。有关此方面的控制,请参见withMetadata。
调用方负责确保目录结构和权限的存在。
未提供callback时,将返回Promise。
参数
fileOutstring 将图像数据写入的路径callbackFunction ? 在完成时调用了两个参数(err, info).info包含输出图像format,size(bytes),width,height,channels和premultiplied(表示是否使用了预乘法)。当使用裁剪策略时,还包含cropOffsetLeftand 及cropOffsetTop.
例子
sharp(input).toFile('output.png', (err, info) => { ... });
sharp(input).toFile('output.png').then(info => { ... }).catch(err => { ... });
- 无效参数,将引发错误 Error
当没有提供callback时,返回 Promise <Object >
toBuffer
将输出写入缓冲区。支持JPEG,PNG,WebP,AVIF, TIFF, GIF和RAW输出。
如果未设置显式格式,则输出格式将与输入图像匹配,除了GIF和SVG输入变为PNG输出。
默认情况下,将删除所有元数据,包括基于EXIF的方向。有关此方面的控制,请参见withMetadata。
如果提供callback, 将返回3个参数 (err, data, info):
err错误信息(如果有)。data输出图像数据。info包含输出图像format,size(bytes),width,height,channels和premultiplied(指示是否使用预乘)。使用裁剪策略时,还包含cropOffsetLeft和cropOffsetTop。
contains the output imageformat,size(bytes),width,height,
未提供callback时,将返回Promise。
参数
optionsObject ?options.resolveWithObjectboolean ? 使用包含data和info属性的对象来解决Promise,而不是仅使用data解决。
callbackFunction ?
例子
sharp(input).toBuffer((err, data, info) => { ... });
sharp(input).toBuffer().then(data => { ... }).catch(err => { ... });
sharp(input).toBuffer({ resolveWithObject: true }).then(({ data, info }) => { ... }).catch(err => { ... });
const { data, info } = await sharp('my-image.jpg')// output the raw pixels.raw().toBuffer({ resolveWithObject: true });// create a more type safe way to work with the raw pixel data// this will not copy the data, instead it will change `data`s underlying ArrayBuffer// so `data` and `pixelArray` point to the same memory locationconst pixelArray = new Uint8ClampedArray(data.buffer);// When you are done changing the pixelArray, sharp takes the `pixelArray` as an inputconst { width, height, channels } = info;await sharp(pixelArray, { raw: { width, height, channels } }).toFile('my-changed-image.jpg');
未提供callback时,将返回Promise <Buffer > 。
withMetadata
将来自输入图像的所有元数据(EXIF,XMP,IPTC)包括在输出图像中。除非提供自定义输出配置文件,否则这也将转换为并添加对Web友好的sRGB ICC配置文件。
如果withMetadata不使用默认行为,则将其转换为与设备无关的sRGB色彩空间,并剥离所有元数据,包括删除任何ICC配置文件。
参数
optionsObject ?
例子
sharp('input.jpg').withMetadata().toFile('output-with-metadata.jpg').then(info => { ... });
// Set "IFD0-Copyright" in output EXIF metadataconst data = await sharp(input).withMetadata({exif: {IFD0: {Copyright: 'Wernham Hogg'}}}).toBuffer();
// Set output metadata to 96 DPIconst data = await sharp(input).withMetadata({ density: 96 }).toBuffer();
- 无效参数将抛出错误 Error
返回 Sharp
toFormat
强制输出为给定格式。
参数
例子
// Convert any input to PNG outputconst data = await sharp(input).toFormat('png').toBuffer();
- 不支持的格式或选项将引发错误 Error
返回 Sharp
jpeg
使用JPEG选项输出图像。
参数
optionsObject ? 输出选项options.qualitynumber 输出质量,整数1-100(可选,默认80)options.progressiveboolean 使用渐进式(隔行扫描)(可选,默认false)options.chromaSubsamplingstring 设置为'4:4:4'以防止色度二次采样,否则默认为'4:2:0'色度二次采样(可选,默认'4:2:0')options.optimiseCodingboolean 优化霍夫曼编码表(可选,默认true)options.optimizeCodingboolean optimiseCoding的替代拼写(可选,默认true)options.mozjpegboolean 使用 mozjpeg 默认值,等价于{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }(可选,默认false)options.trellisQuantisationboolean 应用网格量化,要求libvips编译时支持mozjpeg(可选,默认false)options.overshootDeringingboolean 应用过冲延迟,需要libvips编译并支持mozjpeg(可选,默认false)options.optimiseScansboolean 优化渐进式扫描,强制渐进式,需要libmops编译并支持mozjpeg(可选,默认false)options.optimizeScansboolean aoptimiseScans 的可选拼写(可选,默认false)options.quantisationTablenumber 要使用的量化表,整数0-8,要求libvips编译时支持mozjpeg(可选,默认0)options.quantizationTablenumber 量化表的替代拼写,要求libvips编译时支持mozjpeg(可选,默认0)options.forceboolean boolean JPEG输出,否则尝试使用输入格式(可选,默认true)
例子
// Convert any input to very high quality JPEG outputconst data = await sharp(input).jpeg({quality: 100,chromaSubsampling: '4:4:4'}).toBuffer();
// Use mozjpeg to reduce output JPEG file size (slower)const data = await sharp(input).jpeg({ mozjpeg: true }).toBuffer();
- 无效的选项将引发 Error
返回 Sharp
png
对输出图像使用 PNG 选项。
默认情况下,PNG 输出是每像素8或16位的全彩色。以每像素1、2或4位为索引的 PNG 输入被转换为每像素8位。对于较慢的索引 PNG 输出,将palette设置为 true。
参数
optionsObject ?options.progressiveboolean 使用渐进(隔行)扫描(可选,默认false)options.compressionLevelnumber zlib的压缩级别,0(最快的,最大的)到9(最慢的,最小的)(可选的,默认值为6)options.adaptiveFilteringboolean 使用自适应行过滤(可选,默认false)options.paletteboolean 量化为具有alpha透明性支持的基于调色板的图像,要求libvips编译时支持libimagequant(可选,默认false)options.qualitynumber 使用达到给定质量所需的最低颜色数,必须设置palette为true,要求libvips编译时支持libimagequant(可选,默认100)options.effortnumber 设置CPU 工作量,介于1(最快的)和10(最慢的)之间,设置palette为true(可选,默认7)options.coloursnumber 调色板项目的最大数目,必须设置palette为true,需要有用于libimagequant支持编译libvips(可选,默认256)options.colorsnumber options.colours替代拼写,必须设置palette为true,需要libvips编译并支持libimagequant(可选,默认256)options.dithernumber Floyd-Steinberg错误扩散的级别,必须设置palette为true,需要libvips编译并支持libimagequant(可选,默认1.0)options.forceboolean f 强制PNG输出,否则尝试使用输入格式(可选,默认true)
例子
// Convert any input to full colour PNG outputconst data = await sharp(input).png().toBuffer();
// Convert any input to indexed PNG output (slower)const data = await sharp(input).png({ palette: true }).toBuffer();
- 无效的选项将引发错误 Error
返回 Sharp
webp
使用WebP选项输出图像。
参数
optionsObject ? 输出选项options.qualitynumber 质量,整数1-100(可选,默认80)options.alphaQualitynumber alpha层的质量,整数0-100(可选,默认100)options.losslessboolean 使用无损压缩模式(可选,默认false)options.nearLosslessboolean 使用near_lossless压缩模式(可选,默认false)options.smartSubsampleboolean 使用高质量色度子采样(可选,默认false)options.effortnumber CPU工作的水平,减少文件大小,整数0-6(可选,默认4)options.loopnumber 动画迭代次数,为无限循环动画使用0(可选,默认0)options.delay(number | Array <number >)? 动画帧之间的延迟列表数组(以毫秒为单位)options.forceboolean WebP输出,否则尝试使用输入格式(可选,默认true)
例子
// Convert any input to lossless WebP outputconst data = await sharp(input).webp({ lossless: true }).toBuffer();
// Optimise the file size of an animated WebPconst outputWebp = await sharp(inputWebp, { animated: true }).webp({ effort: 6 }).toBuffer();
- 无效选项时抛出错误 Error
返回Sharp对象
gif
使用GIF选项输出图像。
面板中的第一个条目是为透明性而保留的。
注意:需要使用支持ImageMagick或GraphicsMagick编译的libvips。预编译的二进制文件不包含此文件-请参阅 安装自定义libvips 。
参数
optionsObject ? 输出选项options.coloursnumber 面板条目的最大数量(包括透明度)在2到256之间(可选的,默认的256)options.colorsnumberoptions.colours的另一种拼法 (可选,默认256)options.effortnumber CPU 工作量,介于1(最快的)和10(最慢的)之间(可选的,默认值7)options.dithernumber 错误扩散级别,介于0(最小)和1(最大)之间(可选,默认1.0)options.loopnumber 动画迭代次数,为无限循环动画使用0(可选,默认0)options.delay(number | Array <number >)? 动画帧之间的延迟列表数组(以毫秒为单位)options.forceboolean GIF输出,否则尝试使用输入格式(可选,默认true)
例子
// Convert PNG to GIFawait sharp(pngBuffer).gif().toBuffer());
// Convert animated WebP to animated GIFawait sharp('animated.webp', { animated: true }).toFile('animated.gif');
// Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIFconst out = await sharp('in.gif', { animated: true }).resize({ width: 128, height: 128 }).gif({ dither: 0 }).toBuffer();
- 无效选项时抛出错误 Error
返回 Sharp对象
Meta
- since: 0.30.0
jp2
使用 jp2选项输出图像。
需要使用 OpenJPEG 支持编译的 libvips。预构建的二进制文件不包括这个-请参见 自定义安装 libvips。
参数
optionsObject ? 输出选项
例子
// Convert any input to lossless JP2 outputconst data = await sharp(input).jp2({ lossless: true }).toBuffer();
// Convert any input to very high quality JP2 outputconst data = await sharp(input).jp2({quality: 100,chromaSubsampling: '4:4:4'}).toBuffer();
- 无效选项时抛出错误 Error
返回 Sharp对象
Meta
- since: 0.29.1
tiff
对输出图像使用 TIFF 选项。
可以通过 withMetadata 以像素/英寸为单位设置密度,而不是以像素/毫米为单位提供 xres 和 yres
参数
optionsObject ? 输出选项options.qualitynumber 质量,整数1-100(可选,默认80)options.forceboolean 强制 TIFF 输出,否则尝试使用输入格式(可选,默认true)options.compressionstring 压缩选项: lzw,deflate,jpeg,ccittfax4(可选,默认'jpeg')options.predictorstring 压缩预测变量选项:none, horizontal, float(可选,默认'horizontal')options.pyramidboolean 写一个图像金字塔(可选,默认false)options.tileboolean 写入平铺的tiff(可选,默认值false)options.tileWidthnumber 垂直图块大小(可选,默认256)options.tileHeightnumber 水平图块大小(可选,默认256)options.xresnumber 水平分辨率,以pixels/ mm为单位 (可选,默认1.0)options.yresnumber 垂直分辨率,以pixels/ mm为单位 (可选,默认1.0)options.resolutionUnitstring 分辨率单位,选项: inch(英寸),cm厘米) (可选,默认'inch')options.bitdepthnumber 将位深度减小为1、2或4位 (可选,默认8)
例子
// Convert SVG input to LZW-compressed, 1 bit per pixel TIFF outputsharp('input.svg').tiff({compression: 'lzw',bitdepth: 1}).toFile('1-bpp-output.tiff').then(info => { ... });
- 无效选项时抛出错误 Error
返回 Sharp对象
avif
使用 AVIF 选项输出图像。
虽然可以创建小于16x16像素的 AVIF 图像,但大多数浏览器并不能正确显示这些图像。
不支持 AVIF 图像序列。
参数
返回 Sharp对象
Meta
- since: 0.27.0
heif
使用这些HEIF选项输出图像。
对受专利限制的 HEIC 图像的支持需要使用全局安装的 libvips,该 libvips 编译后支持 libheif、 libde265和 x265。
参数
返回 Sharp对象
Meta
- since: 0.23.0
raw
强制输出为原始的、未压缩的像素数据。像素顺序是从左到右,从上到下,没有填充。对于非灰度色彩空间,通道排序为 RGB 或 RGB。
参数
optionsObject ? 输出选项options.depthstring 位深度, 选项: char, uchar (默认), short, ushort, int, uint, float, complex, double, dpcomplex (可选,默认'uchar')
例子
// Extract raw, unsigned 8-bit RGB pixel data from JPEG inputconst { data, info } = await sharp('input.jpg').raw().toBuffer({ resolveWithObject: true });
// Extract alpha channel as raw, unsigned 16-bit pixel data from PNG inputconst data = await sharp('input.png').ensureAlpha().extractChannel(3).toColourspace('b-w').raw({ depth: 'ushort' }).toBuffer();
- 无效选项时抛出错误 Error
tile
使用基于平铺的深度缩放(图像金字塔)输出。通过 toFormat, jpeg, png 或 webp 函数设置平铺图像的格式和选项。使用.zip 或 .szi文件扩展名和 toFile 一起写到一个压缩的归档文件。
警告:在某些版本的libgsf中,多个同时生成图块输出的Sharp实例对象可能会暴露可能的竞争状况。
参数
optionsObject ?options.sizenumber 以像素为单位的平铺大小,值在1到8192之间 (可选,默认256)options.overlapnumber 以像素为单位的平铺重叠,值介于0和8192之间 (可选,默认0)options.anglenumber tile旋转角度,必须为90的倍数。 (可选,默认0)options.background(string | Object ) 背景颜色, 由 color 模块解析,默认为白色,不透明。 (可选,默认{r:255,g:255,b:255,alpha:1})options.depthstring ? 使金字塔有多深,可能值onepixel,onetile或one, 默认基于布局。options.skipBlanksnumber 跳过图块生成的阈值,对于8位图像为0-255,对于16位图像为0-65535 (可选,默认-1)options.containerstring 图块容器,具有值fs(文件系统) 或zip(压缩文件). (可选,默认'fs')options.layoutstring 文件系统布局,可能的值是dz,iiif,iiif3,zoomify或google. (可选,默认'dz')options.centreboolean 方块中的中心图片。 (可选,默认false)options.centerboolean centre的替代拼写。 (可选,默认false)options.idstring 当layout是iiif/iiif3, 设定@id/id的属性info.json(可选,默认‘https://example.com/iiif’`)
例子
sharp('input.tiff').png().tile({size: 512}).toFile('output.dz', function(err, info) {// output.dzi is the Deep Zoom XML definition// output_files contains 512x512 tiles grouped by zoom level});
- 无效参数时抛出错误 Error
返回 Sharp对象
timeout
设置处理的超时时间,以秒为单位。使用零值无限期地继续处理,这是默认行为。
当 libvips 打开一个输入图像进行处理时,时钟就开始了。不包括等待 libuv 线程可用所花费的时间。
参数
返回 Sharp对象
Meta
- since: 0.29.2
