如何解决严重错误:输入缓冲区包含不支持的图像格式
我想对从AWS S3提取的图像进行图像操作,并希望对其执行操作。我正在使用流来解决加载大文件的问题。
import AWS from 'aws-sdk'
import sharp from 'sharp'
const s3 = new AWS.S3()
const transformer = (w,res,next) =>
sharp()
.resize(w)
.on('data',(data) => {
console.log(data)
res.write(data,'binary')
})
.on('error',(err) => next(err))
.on('end',() => {
console.log('finished')
res.status(200).end()
})
const readStream = s3
.getObject({
Bucket: process.env.UPLOAD_BUCKET_NAME,Key: 'test.jpg'
// Key: `${req.uid.uid}/${req.param('img')}`
})
.createReadStream()
const getImage = (w,next) => {
readStream.pipe(transformer(w,next))
readStream.on('error',(err) => next(err))
}
export default getImage
我正在路由上调用getImage方法,此函数第一次提供图像,但是第二次请求图像时,它会引发错误:输入缓冲区包含不受支持的图像格式 >
解决方法
我找到了解决方法。
const getImage = (req,res,next) => {
const w = parseInt(req.params.w)
const readStream = s3
.getObject({
Bucket: process.env.UPLOAD_BUCKET_NAME,Key: 'test.jpg'
})
.createReadStream()
const transformer = (w) => sharp().resize(w)
pipeline(readStream,transformer(w),(err) => {
if (err) {
next(err)
}
})
}
export default getImage
之所以这样,是因为它不属于请求范围。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。