rss/atom 提要:是否可以调整非常大的图像的大小?

rss/atom feeds: is it possible to resize a very large image?

我使用 Google Apps 脚本构建了一个原子提要。这是一个只有一个条目的玩具示例:

function doGet() {
  var d = new Date(); 
  var feed="<?xml version='1.0' encoding='utf-8'?>\n";
  feed=feed+"<feed xmlns='http://www.w3.org/2005/Atom'>\n";
  feed=feed+"        <title>test</title>\n";
  feed=feed+"        <id>http://www.google.com</id>\n";
  feed=feed+"        <updated>"+d.toISOString()+"</updated>\n";
    var entry=  "        <entry>\n";  
    entry=entry+"           <title>entry one</title>\n";
    entry=entry+"           <author><name>author</name></author>\n";
    entry=entry+"           <updated>" +d.toISOString()+ "</updated>\n";
    entry=entry+"           <id>http://www.google.com</id>\n";
    entry=entry+"           <content type='html'><![CDATA["
   +"<p>lorem ipsum</p><img src='https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Mountaintop_of_Seehorn_%28Davos%29.jpg/1920px-Mountaintop_of_Seehorn_%28Davos%29.jpg' />" + "]]></content>\n";
    entry=entry+"        </entry>\n";
  feed=feed+entry;
  feed=feed+"</feed>";
  Logger.log(feed)
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.ATOM);
}

我不知道我必须在我的 Feed 中插入哪些图像。 有时碰巧有一个非常大的图像,就像例子中的那个。在某些桌面或 Web 应用程序中阅读提要时,图像太大以至于超出屏幕范围。这对我来说是个烦人的问题。

有什么方法可以指示 Feed 调整(仅)大图像的大小,以便它们适合屏幕?

使用 CSS,我会使用 CSS 行

img {max-width: 1000px}

但我认为 RSS/Atom 提要不支持 CSS 语法(或者读取它们的应用程序可能不尊重它)。

使用html,我会使用以下代码:

<img width="1000" src="..." />

但这会重新缩放所有图像,迫使小图像变得非常大且不自然。

那么,有什么办法可以解决这个问题,即重新缩放大图?

在您的情况下,以下模式如何?

模式 1:

在此模式中,使用了 style="max-width: 1000px" 的内部 CSS。

<img style="max-width: 1000px" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Mountaintop_of_Seehorn_%28Davos%29.jpg/1920px-Mountaintop_of_Seehorn_%28Davos%29.jpg" />

模式二:

在这个模式中,使用了width="1000"。在这种情况下,使用脚本。

var url = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Mountaintop_of_Seehorn_%28Davos%29.jpg/1920px-Mountaintop_of_Seehorn_%28Davos%29.jpg";

var blob = UrlFetchApp.fetch(url).getBlob();
var {width, height} = ImgApp.getSize(blob);
var maxWidth = 1000;
var maxHeight = 1000;
var res = width > maxWidth || height > maxHeight ? `<img width="1000" src="${url}" />` : `<img src="${url}" />`;
console.log(res)
  • 在这种情况下,为了从 blob 中检索图像大小,使用了 ImgApp 的 Google Apps 脚本库。所以,请安装这个库。 Ref

  • 在此示例脚本中,如果 maxWidthmaxHeight 超过 1000 像素,则使用 width="1000"