使用Google Apps Script向Google Docs插入Google Drive图片时,如何按原始比例缩小图片
保持图片原始比例插入Google Docs的解决方案
我懂你的困扰——强制给所有图片设置固定的400×400尺寸,肯定会让非正方形的图片变形走样。咱们只需要先获取图片的原始宽高比例,再基于这个比例计算出缩放后的尺寸,保证最大边不超过400像素,就能完美解决这个问题了。
修改后的代码示例
if(images_list[0]){ for(var i=0; i<images_list.length; i++){ try{ var imageID = images_list[i].slice(32,65); var blob = DriveApp.getFileById(imageID).getBlob(); var imgDoc = body.appendImage(blob); // 获取图片原始宽高 var originalWidth = imgDoc.getWidth(); var originalHeight = imgDoc.getHeight(); // 计算缩放比例:以400像素为最大边限制 var scaleFactor = Math.min(400 / originalWidth, 400 / originalHeight); // 计算保持比例后的新尺寸 var newWidth = originalWidth * scaleFactor; var newHeight = originalHeight * scaleFactor; // 应用新尺寸 imgDoc.setWidth(newWidth).setHeight(newHeight); bullet_index = bullet_index+1 }catch(e){ // 可选:添加错误日志方便排查问题 console.log("处理第" + i + "张图片时出错: " + e.message); } } }
代码逻辑说明
- 先通过
imgDoc.getWidth()和imgDoc.getHeight()获取插入后图片的原始尺寸(Blob插入文档后会保留原始尺寸信息) - 计算缩放比例:取
400/原始宽度和400/原始高度中较小的那个值,这样能保证缩放后的图片最大边不会超过400像素,同时严格遵循原始比例 - 用原始尺寸乘以缩放比例得到新的宽高,再设置给图片,既实现了缩小需求,又不会让图片变形
这样修改后,不管你的图片是横版还是竖版,都会自动按比例缩小到合适的尺寸,再也不会出现失真的问题啦。
内容的提问来源于stack exchange,提问作者Harvey
相关产品推荐
相关产品推荐

