调整Google Apps脚本中的图片大小

时间:2014-04-23 09:39:13

标签: google-apps-script google-sites

我有一张图片,我想调整一下。

App脚本代码:

var fileId = 'idImage';
var img = DriveApp.getFileById(fileId).getBlob().;
newFile.getBody().insertImage(0, img); 

对象Blob无法调整大小,所以如何调整图像大小?

此致

4 个答案:

答案 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);