被 gmail 代理阻止的 SVG 图像
Posted
技术标签:
【中文标题】被 gmail 代理阻止的 SVG 图像【英文标题】:SVG images blocked by gmail proxy 【发布时间】:2014-01-15 22:13:54 【问题描述】:似乎新的 gmail 图像代理不适用于 SVG(如果您在新选项卡中打开代理 url,则会出现 404 错误。)
我找不到任何有关支持/阻止的文件类型的文档。 gmail 中的 SVG 是否适用于其他人?
我能想到的唯一解决方法是使用 PhantomJS 在服务器上生成 svg 的 png - 还有其他选项吗?
背景:
这适用于发送每日摘要电子邮件的 web 应用程序,显示过去 24 小时的图表(因此 svg 每天都不同,将它放在电子邮件中可以为用户省去点击进入应用程序的麻烦。)
我知道 SVG 图像在某些电子邮件客户端中无法使用,但 95% 可以使用,其余的仍然可以点击进入 web 应用程序。
在本月初代理更改之前,它在 gmail 中运行良好(本月底才刚刚推出到 Google Apps 帐户。)
【问题讨论】:
【参考方案1】:我收到了 Google 支持的回复,他们确认目前没有计划在代理中支持 SVG 图像。他们说,他们只占 100,000 封电子邮件图像中的 1 个。
除了 PhantomJs,更简单的 svg 的一个选项是 php 插件 ImageMagick。
这里有一些示例代码可以帮助您入门:
header("Content-Type: image/png");
header("Content-Disposition: inline;");
if (empty($svg))
readfile("invisibleImage.png", true);
else
//TODO: You'll probably want to set headers to cache the returned image
$filepath = "/path/to/where/images/are/cached/";
if (!file_exists("$filepath$svgName.png"))
if (!is_dir($filepath))
mkdir($filepath, 0700, 1);
file_put_contents("$filepath$svgName.svg", $svg);
$cmd = "rsvg-convert $filepath$msk.svg > $filepath$svgName.png";
exec($cmd);
unlink("$filepath$svgName.svg");
readfile("$filepath$svgName.png");
您至少需要安装以下一些:
apt-get install librsvg2-bin libpng3 imagemagick libpng12-dev \
【讨论】:
多么厚颜无耻的逻辑! - 这只是 100,000 人中的 1 人,因为没有人愿意发送不受支持的东西 ;) 也许这应该更响亮地听到……?你能分享一个联系谷歌支持的方法吗(只问有多种方法,我尝试了几个 - 没有得到任何回应)。 我通过企业支持收到了我的 Google Apps for Work 帐户的回复。如果您有帐户并且感兴趣,那么每个询问的人都会帮助给予它更高的优先级......但老实说,我仍然不会抱有很大希望。一年过去了,ImageMagick 选项对我们来说效果很好——我们的需求并不太复杂。我在答案中添加了一些示例代码。 另外,为了公平起见,即使 Google 确实支持 svg - 大多数电子邮件客户端也不支持。所以需求可能会保持低位。以上是关于被 gmail 代理阻止的 SVG 图像的主要内容,如果未能解决你的问题,请参考以下文章
我可以阻止静止的 SVG 图像在 QML 中使用过多的 CPU 资源吗?