Я пробовал разные вещи весь день, но, кажется, ничто не предлагает простой, прямой способ записи ReadableStream
(который является изображением) в файл. Я вызываю API, который возвращает ReadableStream
, но что тогда? Я попытался покопаться в объекте немного больше и следовал по нему до возвращения Buffer[]
, что, похоже, должно быть то, что нужно для ввода fs.writeFile()
, но ничего не работает. Файл создается, но я пытаюсь открыть изображение, и он говорит, что не может открыть этот тип файла (о каком типе файла они говорят, я понятия не имею).
Вот мой код, который возвращаетBuffer[]
. Я также могу отрезать некоторые из этих цепочек, чтобы вернуть только тело ReadableStream
, но тогда это вернет PullThrough
, и я уже потерян. Очень мало об этом классе онлайн. Любые предложения?
Вот API, который я использую: https://docs.microsoft.com/en-us/javascript/api/@azure/cognitiveservices-computervision/computervisionclient?view=azure-node-latest#generatethumbnail-number--number--string--computervisionclientgeneratethumbnailoptionalparams--servicecallback-void--
// Image of a dog.
const dogURL = 'https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png';
await computerVisionClient.generateThumbnail(100, 100, dogURL, { smartCropping: true } )
.then((thumbResponse) => {
console.log(thumbResponse.readableStreamBody.readableBuffer.head.data)
fs.writeFile("thumb.jpg", thumbResponse.readableStreamBody.readableBuffer.head.data, "binary", (err) => {
console.log('Thumbnail saved')
if (err) throw err
})
})