如何在可读http流上运行Sharp变换并写入文件

By simon at 2018-02-28 • 0人收藏 • 66人看过

这个问题是关于夏普库的节点 http://sharp.pixelplumbing.com/en/stable/api-input/ 建造文件uctor说它可以从a中读取图像数据 如果你将它管入尖锐的物体中“JPEG,PNG,WebP,GIF,SVG,TIFF 或raw像素图像数据可以在不存在时流入对象。“ 我试图从HTTP GET获取可读流GCS进入 转换,然后使用toFile在文件中获取转换后的图像。我明白了 来自Sharp的一个错误表明它没有获取图像数据输入 正常。这是代码,它是这个功能的一部分 流程。

const avatarId = this.Uuid(),
    sharp = this.Sharp({failOnError: true}),
    instream = this.GoogleCloudStorage.GET(this.GoogleCloudStorage.getName(photo.uri)),
    fileLocation = this.getTempFileLocation()

sharp.rotate().extract({left: x, top: y, width: w, height: w})
if (w > 600) {
    sharp.resize(600, 600, {fastShrinkOnLoad: false})
    w = 600
}

instream.pipe(sharp)
return sharp.jpeg().toFile(fileLocation)
.then( info => {
    console.log('editAvatar: sharp done')
    return this.GoogleCloudStorage.POST( avatarId, this.Fs.createReadStream( fileLocation ), this.getMIMEType(info) )
} )
GoogleCloudStorage.GET基本上在云存储File对象上返回File.createReadStream。 我已经在脚本中测试了这个GET调用,它起作用。 GoogleCloudStorage.POST使用 File.createWriteStream并将传递的可读流传递给它。因此它需要 收到一个可读的流,wh这就是为什么我试图写出尖锐 转换为文件。 我得到的错误输出:
[02/24/2018 07:41:06.892] Error -- message: Input file is missing or of an unsupported image format -- stack: Error: Input file is missing or of an unsupported image format
events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: Unexpected data on Writable Stream
    at Sharp._write (/code/api/node_modules/sharp/lib/input.js:114:14)
    at doWrite (_stream_writable.js:329:12)
    at writeOrBuffer (_stream_writable.js:315:5)
    at Sharp.Writable.write (_stream_writable.js:241:11)
    at DestroyableTransform.ondata (/code/api/node_modules/readable-stream/lib/_stream_readable.js:612:20)
    at emitOne (events.js:96:13)
    at DestroyableTransform.emit (events.js:191:7)
    at addChunk (/code/api/node_modules/readable-stream/lib/_stream_readable.js:284:12)
    at readableAddChunk (/code/api/node_modules/readable-stream/lib/_stream_readable.js:271:11)
    at DestroyableTransform.Readable.push (/code/api/node_modules/readable-stream/lib/_stream_readable.js:238:10)
更新:我试用了usi改为File.download,而且工作正常。所以 或者我错过了将管道输送到尖端的东西,或者尖锐的有一个 错误。

1 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

你可能会发现这个谷歌示例很有用,它使用锐利的缩略图 形象,并把它放在一个桶里

登录后方可回帖

Loading...