sharpを使った時の出力形式について調べてみました。
出力形式
何も指定しないとファイル名の拡張子を読み取って変換してくれます。
const sharp = require('sharp')
sharp('image.jpg')
.toFile('output.png', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'png',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 1476247 }
JPEG
qualityで画質、progressiveでプログレッシブ対応を指定できます。
const sharp = require('sharp')
sharp('image.jpg')
.jpeg({
quality: 50,
progressive: true
})
.toFile('output.jpg', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'jpeg',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 80330 }
PNG
compressionLevelでzlibでの圧縮率(0~9)、progressiveでプログレッシブ対応を指定できます。
const sharp = require('sharp')
sharp('image.jpg')
.png({
compressionLevel: 5,
progressive: true
})
.toFile('output.png', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'png',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 1581660 }
WebP(不可逆圧縮)
qualityで画質(1~100)を指定できます。
const sharp = require('sharp')
sharp('image.jpg')
.webp({
quality: 50
})
.toFile('output.webp', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'webp',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 78968 }
WebP(可逆圧縮)
可逆圧縮を使用するにはlosslessプロパティをtrueに指定します。また、nearLosslessというプロパティもあります。
const sharp = require('sharp')
sharp('image.jpg')
.webp({
lossless: true
})
.toFile('output.webp', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'webp',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 705258 }
TIFF
qualityで画質(1~100)、compressionで圧縮方法(lzw, deflate, jpeg, ccittfax4)を指定できます。
const sharp = require('sharp')
sharp('image.jpg')
.tiff({
quality: 50
})
.toFile('output.tiff', (err, info)=>{
if(err){ throw err }
console.log(info)
})
出力結果
{ format: 'tiff',
width: 1024,
height: 683,
channels: 3,
premultiplied: false,
size: 83822 }