gpt4 book ai didi

asp.net - 自动刷新图像(无 javascript、flash、silverlight)

转载 作者:行者123 更新时间:2023-12-01 09:35:52 25 4
gpt4 key购买 nike

我想显示每 2 秒(或类似)更改其内容的图像。不幸的是,我不能使用 JavaScript、Flash 或 Silverlight,因为我想在传出的 html 电子邮件中使用动画,并在各种电子邮件客户端之间实现最大的兼容性。

所以,我尝试使用 .ashx 处理程序生成图像。但我无法刷新图像(或重新执行 ashx 处理程序)。我尝试了一个循环,但没有奏效。

    public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/png";

string strDisplay = DateTime.Now.ToString();

Bitmap bmpOut = new Bitmap(400, 50);
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.Black, 0, 0, 400, 50);
g.DrawString(strDisplay, new Font("Verdana", 18), new SolidBrush(Color.White), 0, 0);

MemoryStream ms = new MemoryStream();
bmpOut.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] bmpBytes = ms.GetBuffer();
bmpOut.Dispose();
ms.Close();

context.Response.BinaryWrite(bmpBytes);
context.Response.End();

}

我该怎么做,或者有其他解决方案吗?

编辑:图像内容未预定义。例如,它包含推文列表。

编辑:目前我们正在尝试 MJPEG。有谁知道更多关于这个和电子邮件客户的信息?

非常感谢您的帮助,

文森特

最佳答案

在阅读了一些评论后,真正的问题似乎是如何在电子邮件中显示动画图像序列。

您几乎永远不会被允许在电子邮件客户端中运行 JavaScript,即使您可以,客户端之间的支持也可能会有很大差异,而 Web 邮件客户端可能会搞砸。所以这个选项被取消了。

同样,Flash/Silverlight 不太可能得到电子邮件客户端的良好支持,并且需要安装浏览器插件,这在某些桌面电子邮件客户端软件中可能无法实现。所以这个选项被取消了。

所以我们只剩下动画 GIF 图像了。这种格式在“互联网时代”已经支持了很长时间。但是,您需要牢记两点:

  1. 大多数电子邮件客户端现在会阻止图片(实际上是所有外部资源),直到用户明确点击“显示图片和链接”或他们的电子邮件客户端中的类似内容。这意味着它仍然不保证他们会看到您的图像。您可以在发送电子邮件时将动画 gif 嵌入到电子邮件中,但随后您放弃了在动画中获取最新信息的能力。 (也就是说,我可能一周都没有阅读您的电子邮件,如果图片被嵌入,它现在是一周前的社交新闻,如果它是外部 URL,我可能不会点击“显示图片”)
  2. 动画 GIF 使用 256 色调色板,因此您无法进行摄影具有摄影质量的动画。这个问题虽然出现主要是显示文字内容,写出最近的社交互动(推文/帖子),所以我们应该没问题。

假设这些条件适合您的应用程序,我们需要弄清楚如何在您在问题中发布的 HttpHandler 代码中生成动画 GIF。这不是一个新想法,我们不需要重新发明轮子。这里还有关于stackoverflow的其他帖子:

stackoverflow 第一篇文章中最受好评的答案对我来说似乎很合理: HOWTO: create an animated GIF using .Net (C#)

这种技术不依赖于任何外部库,并且有一些解释各种头字段的注释。在您的情况下,您将对此代码中的 buf3 字节数组感兴趣,它是每个帧的 header 。您可以在此处设置每个正在显示的图像的延迟。您可能会受益于在谷歌上快速搜索动画 GIF 规范,这会出现:

规范将允许您准确查找每个标题字段的作用。如果您不想了解 GIF 中的标题,那么也许只需回到其他人的实现,例如:NGif encoder on CodeProject .当然,如果您对流程的工作原理有更深入的了解,您将始终可以更好地控制流程。即使您使用其他人的实现,也很容易理解它在幕后所做的工作。

关于asp.net - 自动刷新图像(无 javascript、flash、silverlight),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8180084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com