我有一个Blob,其中包含一个在Google云端硬盘中远程加载和创建的图像:
var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById('THjgj698979XXXXXXXX');
var result = folder.createFile(fileBlob);
我想要的是调整此fileBlob中包含的图像的大小。我该怎么办?
为您提供信息,可以提供帮助但最终并没有真正帮助我的帖子:(说明如何调整图像大小,而不是如何调整Blob中的图像大小) Resizing image in Google Apps Script
谢谢
编辑:
这是我现在要做的。但是我有一个问题:图像按比例缩小,但没有达到我指定的大小...
var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById('THjgj698979XXXXXXXX');
var docfile = Drive.Files.insert({
title: "temp",
mimeType: "application/vnd.google-apps.document",
}).getId();
var blobImage = DocumentApp.openById(docfile).insertImage(0, fileBlob);
blobImage.setWidth(10);
blobImage.setHeight(10);
var fileBlob2 = blobImage.getBlob();
fileBlob2.setName(newFilename);
var result = folder.createFile(fileBlob2);
图像从4000x6000缩小到2500x1667。不能设为10x10:(
您看到如何解决此问题了吗?
谢谢!
答案 0 :(得分:3)
通过从请求中获取Blob并将其放在width
或height
属性(这些图像的宽度和高度都在其中)中,来调整App脚本中图像的大小。 ,请使用对您最有用的方法)。
虽然您似乎正在尝试调整图像在驱动器文件夹中的大小,但应该使用服务器/无服务器功能来完成(也许要查看Node-based resize tool,您可以将其推入Google云功能?)。
您还可以尝试创建Google文档并将图像粘贴到文档中,然后get the image blob并将其保存到文件夹中。
答案 1 :(得分:2)
如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
不幸的是,在当前阶段,尚无方法直接在Google Apps脚本中调整图像的大小。但是有a workaround。此解决方法的流程如下。
thumbnailLink
。thumbnailLink
来修改创建的图像文件的宽度。
thumbnailLink
的值类似于https://lh3.googleusercontent.com/###=s220
。=s220
时,缩略图的大小也会更改。此解决方法使用此方法。在运行脚本之前,请设置变量width
,outputFilename
和url
。还有please enable Drive API at Advanced Google services.
function myFunction() {
var width = 10; // Please set the size of width with the unit of pixels.
var outputFilename = "sample.png"; // Please set the output filename.
var url = "###";
var blob1 = UrlFetchApp.fetch(url).getBlob().setName("sampleImage_temporal");
var fileId = DriveApp.createFile(blob1).getId();
var link = Drive.Files.get(fileId).thumbnailLink.replace(/\=s.+/, "=s" + width);
var blob2 = UrlFetchApp.fetch(link).getBlob().setName(outputFilename);
var file = DriveApp.createFile(blob2);
Drive.Files.remove(fileId);
}
image/png
。如果这不是您想要的方向,我深表歉意。
答案 2 :(得分:0)
没有任何API调用来调整应用程序脚本上图像的大小,您可以使用第三方服务(例如tinypng或其他一些服务),因为应用程序脚本中没有原生功能。