我正在使用云存储,并且运行良好,只是我不想每次都返回完整大小的图像。我想知道是否有一种方法可以指定当我请求图像时将图像调整大小的宽度?
这是工作代码。我只需要返回较小的图像,例如300px宽(保持原始宽高比)。这个数字可能会更改或波动,因此除非绝对必要,否则我不想保存大量不同大小的不同版本。
var fileName = "Image.png";
var stream = bucket.file(fileName).createReadStream();
res.writeHead(200, { 'Content-Type': imageInfo.mime_type });
stream.on('data', function (data) {
res.write(data);
});
stream.on('error', function (err) {
console.log('error reading stream', err);
});
stream.on('end', function () {
res.end();
});
我发现该站点解释了如何在PHP中执行此操作,因此我猜想可能有一种在node中执行此操作的方法吗?
https://cloud.google.com/appengine/docs/standard/php/googlestorage/images
本文应该助你一臂之力: “使用Google Cloud Platform上传,调整大小和提供图像” @Lipis https://medium.com/google-cloud/uploading-resizing-and-serving-images-with-google -云平台-ca9631a2c556
这对于公共URL很有意义,而我恰好是私有的,这就是为什么我希望直接通过节点API做到这一点。
它们是私有的,因为未经身份验证就无法查看,或者它们是公开只读的?
未经身份验证就无法查看它们。每个单个图像都受到保护(不仅是秘密链接,而且用户必须登录才能查看该图像)。
图像大小调整以及用户是否通过身份验证似乎是另外一个问题。您应该能够使用上述策略,但是将安全规则与映像存储中所有资源的下载/查看联系在一起。