【问题标题】:Google Script Image Resizing谷歌脚本图像大小调整
【发布时间】:2012-08-28 03:34:46
【问题描述】:

我正在尝试制作一个脚本来调整谷歌文档中图像的大小。我有的是:

var imgs = currentDoc.getImages();

for (var i = 1; i < imgs.length; i++)
{
   cell = row.insertTableCell(1);
   imgNew = imgs[i].setWidth(365);

   cell.insertImage(1, imgNew.getBlob());
}

图像已正确插入,但无论我将宽度设置为多少,大小都不会改变。由于图像要进入一个单元格(宽度= 370),是否可以让图像占据 100% 的宽度并按比例缩放高度?如果不是,我可以手动设置像素数,但这也不起作用。有什么想法吗?

【问题讨论】:

    标签: image google-apps-script google-docs google-apps


    【解决方案1】:

    问题是图像大小在插入表格后应该改变。以下代码正常工作

    function test() {
      var doc = DocumentApp.openById('here_is_doc_id');
      var imgs = doc.getImages();
      var table = doc.getTables()[0];
      for (var i = 0; i < imgs.length; i++) {
       var row = table.appendTableRow();
       var cell = row.insertTableCell(0);
       var imgNew = imgs[i].copy();
       cell.insertImage(0, imgNew);
       imgNew.setWidth(365);
      }
    }
    

    请注意,数组索引、单元格编号等从 0 开始,而不是 1。

    【讨论】:

    • 感谢您的回答。我试过你的代码,但它不起作用。我可以看到图像的灰色轮廓,中间有一个“链接断开”图标。我怀疑这是因为 imgs[i].copy() 行。图像确实可以正确调整大小,但未显示。当我将 imgs[i].copy() 更改为 imgs[i].getBlob 时,图像显示正确,但 setWidth() 函数不再起作用(函数未定义错误)。复制()有什么问题吗? (我的代码与您的代码基本相同,我只是省略了为清楚起见创建的一些附加表格元素)。谢谢
    • 好的,简单的解决方案。希望这会对其他人有所帮助。您只需在插入图像时设置图像宽度,如下所示: cell.insertImage(0, imgNew.getBlob()).setWidth(500)
    【解决方案2】:

    仅供参考,您无需调用 getBlob()...任何具有 getBlob() 的内容都可以在需要 Blob 的任何地方直接传入。

    【讨论】:

      【解决方案3】:

      你试过了吗:

      imgs[i].attr('width', '370');
      

      或者尝试分配一个宽度为 100% 的类

      【讨论】:

      • 感谢您的建议。 attr 不是函数。 setAttributes() 不接受这样的两个输入。知道如何将其分配给 100% 宽度的类吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2012-07-20
      • 2013-08-28
      相关资源
      最近更新 更多