0

我有一个 Firebase 云函数,它使用GraphcisMagick将缓冲区(从 PDF)转换为 PNG 。当我尝试将此 PNG 缓冲区写入 Firebase 存储时,我得到一个文件存根,但没有内容(空文件)。我转换为 PNG 失败...

async function createThumbnail(newthumbname, mimetype, filebuffer) {
    const file = bucket.file(newthumbname)
    const thumbstream = file.createWriteStream({metadata:{contentType:mimetype}})
    const gm = require('gm').subClass({imageMagick: true})
    gm(filebuffer)
    .toBuffer('png', (err, thumbbuffer)=>{
        console.log(filebuffer)
        console.log(thumbbuffer)
        thumbstream.end(thumbbuffer)
    })
}

Firebase 存储控制台

filebuffer传入的有createThumbnail()内容,

<Buffer 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 33 20 30 20 6f 62 6a 0a 3c 3c 20 2f 46 69 6c 74 65 72 20 2f 46 6c 61 74 65 44 65 63 ... 6464 more bytes>

但是正在生产和gm(filebuffer).toBuffer()空虚thumbbufferError: Stream yields empty buffer

我在这里做错了什么?

4

1 回答 1

0

这似乎是一个png问题,jpg似乎适用于两者,.stream().toBuffer()

我会安顿下来,jpg直到我弄清问题出在哪里为止png

async function createThumbnail(newthumbname, mimetype, filebuffer) {
    const file = bucket.file(newthumbname)
    const thumbstream = file.createWriteStream({metadata:{contentType:mimetype}})
    const gm = require('gm').subClass({imageMagick: true})
    gm(filebuffer)
    // .setFormat("jpg")
    // .stream()
    // .pipe(thumbstream)
    .toBuffer('jpg', (err, thumbbuffer)=>{
        thumbstream.end(thumbbuffer)
    })
}
于 2021-07-19T19:08:04.647 回答