gpt4 book ai didi

javascript - 在上传到谷歌云存储之前用锐利调整图像大小

转载 作者:行者123 更新时间:2023-12-05 04:46:13 25 4
gpt4 key购买 nike

我试图在上传到谷歌云存储之前调整或压缩图像。上传工作正常,但调整大小似乎不起作用。

这是我的代码:

const uploadImage = async (file) => new Promise((resolve, reject) => {
let { originalname, buffer } = file
sharp(buffer)
.resize(1800, 948)
.toFormat("jpeg")
.jpeg({ quality: 80 })
.toBuffer()


const blob = bucket.file(originalname.replace(/ /g, "_"))
const blobStream = blob.createWriteStream({
resumable: false
})
blobStream.on('finish', () => {
const publicUrl = format(
`https://storage.googleapis.com/${bucket.name}/${blob.name}`
)
resolve(publicUrl)
}).on('error', () => {
reject(`Unable to upload image, something went wrong`)
})
.end(buffer)
})

最佳答案

我在做的一个项目中遇到了同样的问题。经过大量试验和错误后,我找到了以下解决方案。它可能不是最优雅的,但对我有用。

在我的上传路径函数中,我使用原始文件值创建了一个新的缩略图对象,并将其作为文件参数传递给用于谷歌云存储的 uploadFile 函数。

在我的上传图片路由函数中:

const file = req.file;

const thumbnail = {
fieldname: file.fieldname,
originalname: `thumbnail_${file.originalname}`,
encoding: file.encoding,
mimetype: file.mimetype,
buffer: await sharp(file.buffer).resize({ width: 150 }).toBuffer()
}

const uploadThumbnail = await uploadFile(thumbnail);

我的google云存储上传文件功能:

const uploadFile = async (file) => new Promise((resolve, reject) => {

const gcsname = file.originalname;
const bucketFile = bucket.file(gcsname);

const stream = bucketFile.createWriteStream({
resumable: false,
metadata: {
contentType: file.mimetype
}
});

stream.on('error', (err) => {
reject(err);
});

stream.on('finish', (res) => {
resolve({
name: gcsname
});
});

stream.end(file.buffer);
});

关于javascript - 在上传到谷歌云存储之前用锐利调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68923598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com