我有一张图片,我想调整一下。
App脚本代码:
var fileId = 'idImage';
var img = DriveApp.getFileById(fileId).getBlob().;
newFile.getBody().insertImage(0, img);
对象Blob无法调整大小,所以如何调整图像大小?
此致
答案 0 :(得分:1)
就像一个FYI,你不需要调用getBlob()..任何有getBlob()的东西都可以直接传递给需要Blob的地方。
答案 1 :(得分:1)
我找到了解决方案:
var fileId = 'ImageID';
var img = DriveApp.getFileById(fileId).getBlob();
var imgDoc = newFile.getBody().insertImage(0, img);
imgDoc.setWidth(630);
这是一个inlineImage
对象。
link:https://developers.google.com/apps-script/reference/document/inline-image
答案 2 :(得分:1)
我已经尝试过你给出的解决方案,但没有成功,我总是得到一个奇怪的图像比例。 我找到了一个有效的解决方案frightening post(我是新手):
完全准确的代码:
var inlineI = GDoc.appendImage(img);
var width = inlineI.getWidth();
var newW = width;
var height = inlineI.getHeight();
var newH = height;
var ratio = width/height
if(width>640){
newW = 640;
newH = parseInt(newW/ratio);
}
inlineI.setWidth(newW).setHeight(newH)
要做的是将图像作为blob插入(像往常一样),然后在doc中获取其尺寸以计算比率,并最终设置其尺寸。 希望它有所帮助!
不过,谢谢@ serge-insas!编辑:这是上述代码的更新版本,也可以修复图片的高度。专家可能会有一些奇怪的东西,但正如所说,我是一个菜鸟!
if(insertImage == true){
var cellImage = ligne.appendTableCell().insertImage(0, image);
//get the dimensions of the image AFTER having inserted it to fix
//its dimensions afterwards
var originW = cellImage.getWidth();
var originH = cellImage.getHeight();
var newW = originW;
var newH = originH;
var ratio = originW/originH
if(originW>maxWidth){
newW = maxWidth;
newH = parseInt(newW/ratio);
}
cellImage.setWidth(newW).setHeight(newH).setAttributes(styleImage);
var newWW = cellImage.getWidth();
var newHH = cellImage.getHeight();
var newRatio = newHH/newWW;
Logger.log("image width = "+newWW);
Logger.log("image height = "+newHH);
if(newHH>maxWidth){
newHH = maxHeight;
newWW = parseInt(newHH/newRatio);
}
cellImage.setWidth(newWW).setHeight(newHH);
cellImage.getParent().setAttributes(styleImage);
答案 3 :(得分:0)
调用insertImage()
返回一个InlineImage
对象(如果正在使用电子表格,则返回OverGridImage
)
无论哪种情况,您都可以使用如下函数来调整图像大小:
function resizeImg(img, targetHeight) {
var height = img.getHeight();
var width = img.getWidth();
var factor = height / targetHeight;
img.setHeight(height / factor);
img.setWidth(width / factor);
};
这种方法可确保图像按比例缩放到目标高度(以像素为单位)。
用法示例:
var myImg = newFile.getBody().insertImage(0, img);
resizeImg(myImg, 60);