如何获取使用 UrlFetchApp.fetch(photoLink) 获得的 jpeg 图像的大小(以像素为单位)?

2023-12-09

在以 HTML 格式发送电子邮件的脚本中,我添加了存储在公共共享文件夹中的图像。 我使用得到的斑点UrlFetchApp.fetch(photoLink)但图像不一定具有正确的尺寸,因此在 html 代码中我使用宽度和高度属性(目前使用固定值,请参阅下面的代码),但我希望它能够以正确的比例自动调整大小。

为了实现这一目标,我需要知道如何获取图像的原始大小(高度和宽度),但我只是不知道如何在不将图像插入中间文档的情况下获取它(这可行,但我发现这种方法有点奇怪并且不必要地复杂......此外,我不喜欢每次更改图像文件时都会出现无用的文档)。

以下是创建电子邮件的代码的相关部分:

function sendMail(test,rowData,genTitle,day,title,stHour,endHour){
  var photoLink = sh.getRange('H1').getValue();
  var image = UrlFetchApp.fetch(photoLink);
  //************* find the pixel size of the image to get its ratio
  var msgTemplate = '<A HREF="http://www.domain.be/reservations-global/"><IMG SRC="'+photoLink+'" BORDER=0 ALT="logo" HEIGHT=200 WIDTH=300></A><BR><BR>'+
    'Résumé de vos réservations au nom de <NOM><BR><BR><BR><table style="background-color:lightblue;border-collapse:collapse;" border = 1 cellpadding = 5><th></th><th><TABLEHEADER></th><EVENTS></table><BR><CONCLUSION><BR>Cordialement,<BR><BR>';
  var mailTitle = 'Confirmation de réservation - '+getTextFromHtml(genTitle);
  var descr = '';
  for(var d = 0;d<day.length;++d){
    Logger.log(Number(rowData[(d+5)]));
    var content = '<tr bgcolor="#ffffbb" width="100%"><td><NUMBER> </td><td > <DESCRIPTION></td></tr>'
    if(Number(rowData[(d+5)])>1){var pl = ' places'}else{var pl = ' place'};
    content = content.replace('<NUMBER>',rowData[(d+5)]+pl);
    content = content.replace('<DESCRIPTION>',title[d]+' de '+stHour[d]+' heures à '+endHour[d]+' heures');
    if(Number(rowData[(d+5)])>0){
      descr += content;
    }
  }
  msgTemplate = msgTemplate.replace('<NOM>',rowData[1]).replace('<EVENTS>',descr).replace('<TABLEHEADER>',genTitle); 
  var textVersion = getTextFromHtml(msgTemplate.replace(/<br>/gi,'\n').replace(/<td>/gi,'\n'));
//  Logger.log(textVersion)
  if(test){
    MailApp.sendEmail(Session.getEffectiveUser().getEmail(),mailTitle, textVersion,{'htmlBody':msgTemplate,"replyTo" : retour});
  }
  else
  {
    MailApp.sendEmail(rowData[2],mailTitle, textVersion,{'htmlBody':msgTemplate,"replyTo" : retour});
  }
}

Apps 脚本中没有简单的方法来确定图像大小。还有一些其他项目可能能够分析位图数据并为您提供尺寸。

上次我不得不解决这个问题。我刚刚编写了一个简单的 App Engine 应用程序来为我进行图像数学计算 -

import webapp2
from google.appengine.api import urlfetch
from google.appengine.api import images
from django.utils import simplejson

class MainHandler(webapp2.RequestHandler):
  def get(self):
    url = self.request.get('url')
    imgResp = urlfetch.fetch(url) #eg. querystring - url=http://xyz.com/img.jpg 
    if imgResp.status_code == 200:
      img = images.Image(imgResp.content);
      jsonResp = {"url":url, "h":img.height, "w":img.width, "format":img.format}
      self.response.headers['Content-Type'] = 'application/json'
      self.response.out.write(simplejson.dumps(jsonResp))

app = webapp2.WSGIApplication([('/imageinfo', MainHandler)], debug=True)

然后我从 Apps 脚本中调用它,如下所示 -

function checkImageSizes() {
  var imageUrls = ['http://developers.google.com/apps-script/images/carousel0.png','http://www.w3.org/MarkUp/Test/xhtml-print/20050519/tests/jpeg420exif.jpg'];
  for(var i in imageUrls){
    var resp = JSON.parse(UrlFetchApp.fetch('http://arunimageinfo.appspot.com/imageinfo?url='+imageUrls[i]).getContentText());
    Logger.log('Image at %s is %s x %s',resp.url,resp.w,resp.h);
  }  
}

如果您的使用量是每周几次,欢迎您使用我的 App Engine 实例:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取使用 UrlFetchApp.fetch(photoLink) 获得的 jpeg 图像的大小(以像素为单位)? 的相关文章

随机推荐

  • 在 Java 中使用 SWIG 处理返回指向结构数组的指针的 C 函数

    我试图找出需要进行哪些 SWIG 接口文件更改才能处理 getFoo 返回指向自定义结构数组 sender id t 的指针 没有任何特殊的 SWIG 接口代码 我只得到 Java 端的指针 如何将该指针转换为可以循环或迭代的对象 在 Ja
  • 从 NSExpression 捕获 NSInvalidArgumentException

    在我的代码中 我将字符串评估为数学表达式 例如 NSString formula 9 7 NSExpression expr NSExpression expressionWithFormat formula NSLog expr expr
  • c# 为什么当路径为“C:”时,directoryInfo 将我带到应用程序文件夹?

    为什么当我给出路径 c 时它直接将我更改为应用程序文件夹 static void Main string args DirectoryInfo dir new DirectoryInfo c Console WriteLine dir Fu
  • 如何针对 64 位优化 .NET 网站和应用程序?

    如何在 NET 2 0 Web 应用程序和控制台 表单应用程序中充分利用 64 位架构 我认为在 32 位与 64 位架构方面 您的托管 NET 代码中没有太多可以优化的地方 这是因为大多数差异和优化很可能已经由底层虚拟机实现 正如中提到的
  • 一段时间后显示 UIAlertView

    我试图在一段时间后显示 UIAlertView 比如在应用程序中执行某些操作后 5 分钟 如果应用程序已关闭或在后台运行 我已经通知用户 但我想在应用程序运行时显示 UIAlertView 我尝试按如下方式调度异步 但警报永远弹出 NSTh
  • URL 以句点结尾的 WebClient 问题

    我正在运行以下代码 using WebClient wc new WebClient string page wc DownloadString URL 要访问股价网站的 URL http www shareprice co uk 如果您将
  • JPA:级联删除不会删除子级

    编辑 修改问题以更好地反映问题 最初发布的问题here 我有一个父母 Context 和一个孩子 User 实体 多对一关系 父级上的级联 REMOVE 不会删除子级 代码如下 Owning side child Entity public
  • 如何在Python中获取CSV文件的总行数?

    我正在使用 python Django 框架 来读取 CSV 文件 如您所见 我仅从该 CSV 中提取了 2 行 我一直在尝试做的是将 CSV 的总行数存储在变量中 如何获得总行数 file object myfilePath fileOb
  • OpenCart - 不发送电子邮件(通知或联系页面)

    据我所知 我的邮件设置配置正确 但我没有收到任何电子邮件 不是通过联系表单收到的 也没有收到新客户或下的任何订单的电子邮件 这是我当前的设置 我试过了 更改为 SMTP 我收到错误 我的主机 IXWebHosting 说我 需要在应用程序内
  • 在react-native中使用函数的区别

    假设我有一个向其传递函数的组件 export default class SomeComp extends Component constructor props super props someFunc gt return render
  • 在 JTextArea 中插入文本

    我正在用Java开发一个简单的应用程序 我想知道是否有任何方法可以在文本区域内插入附加文本 句子中间的某个位置 该文本区域不是空的 在光标所在的位置某些组件的点击 有人可以指导我如何完成它吗 如果这是一个JTextArea组件你可以使用 a
  • 普遍适用

    如何制作适用于 iphone 和 ipad 的通用应用程序 我们如何检测设备是 iPhone 还是 iPad 最简单的方法是使用UI USER INTERFACE IDIOM UIUserInterfaceIdiomPad and UI U
  • CSS 选择器中的逗号是什么意思? [复制]

    这个问题在这里已经有答案了 当我拥有时这意味着什么 A B A C some styles 这是否意味着B类没有样式定义 这意味着两者 A B and A C共享相同的声明块 逗号表示将该块中的声明应用于这两个选择器 而逗号后面的换行符并不
  • 在我的应用程序中使用锁屏?

    我想让我的应用程序在多任务处理时使用锁定屏幕上的音频按钮 是的 就像潘多拉一样 我想要使 用什么 API See the 多媒体远程控制文档 基本上 你只需要调用 beginReceivingRemoteControlEvents在您的共享
  • 通过迁移向列添加默认值

    如何通过迁移向已存在的列添加默认值 我能找到的所有文档都会向您展示如何在该列尚不存在的情况下执行此操作 但在本例中它确实存在 您应该这样做 change column users admin boolean default gt false
  • 反引号作为语法运算符

    刚刚遇到了一些对我来说似乎很奇怪的事情 反引号的功能类似于语法运算符 applyOp Int gt Int gt Int gt Int gt Int gt Int applyOp x op y x op y gt applyOp 2 5 7
  • 无法对多个 GWT 应用程序使用相同的 cookie

    我正在开发一个应用程序网络 我想向我的用户提供多个应用程序 他们只需注册 登录一次 并通过同一登录名使用所有应用程序 为了实现这一点 我创建了一个 cookie 在其中存储用户的会话 ID 他在登录时收到 每次用户打开应用程序时 启动模块都
  • Microsoft Graph:将文件上传到共享库而不是用户库?

    在有关的文档中Upload 列出了这些请求选项 PUT me drive items parent id filename content PUT me drive root parent path filename content PUT
  • 高图表中的不同标记大小?

    对于高图中的散点图 我希望不同的系列具有不同的标记半径 这可能吗 plotOptions series marker enabled true symbol circle radius 15 使用以下方法不起作用 plotOptions s
  • 如何获取使用 UrlFetchApp.fetch(photoLink) 获得的 jpeg 图像的大小(以像素为单位)?

    在以 HTML 格式发送电子邮件的脚本中 我添加了存储在公共共享文件夹中的图像 我使用得到的斑点UrlFetchApp fetch photoLink 但图像不一定具有正确的尺寸 因此在 html 代码中我使用宽度和高度属性 目前使用固定值