Silverlight-部分或渐进加载缩略图的大图像?

Silverlight-部分或渐进加载缩略图的大图像?,silverlight,silverlight-3.0,azure,Silverlight,Silverlight 3.0,Azure,我有一些大的图像(MB的),我想快速查看缩略图(KB的)。 我希望避免在服务器上存储2个图像(一个用于大图像,一个用于缩略图) 这些图像存储在Azure Blob中 我研究过deepzoom,它似乎无法处理动态图像 编辑:azure上图像的内容类型为“应用程序/八位字节流”。也许改变这个会有帮助 有什么想法吗?为什么要避免将图像存储在服务器上?在运行时从MB大小的图像在服务器上生成缩略图将对性能产生巨大影响。 话虽如此,您可以在第一次请求它们时在运行时生成它们,然后将它们保存到缓存文件夹中。

我有一些大的图像(MB的),我想快速查看缩略图(KB的)。 我希望避免在服务器上存储2个图像(一个用于大图像,一个用于缩略图)

  • 这些图像存储在Azure Blob中
  • 我研究过deepzoom,它似乎无法处理动态图像
编辑:azure上图像的内容类型为“应用程序/八位字节流”。也许改变这个会有帮助


有什么想法吗?

为什么要避免将图像存储在服务器上?在运行时从MB大小的图像在服务器上生成缩略图将对性能产生巨大影响。
话虽如此,您可以在第一次请求它们时在运行时生成它们,然后将它们保存到缓存文件夹中。下次请求它们时,您只需从缓存加载它们并直接发送回来。

下载整个图像和不存储补充缩略图的替代方法是在服务器上动态生成缩略图。这将是昂贵的。我猜你的真正意思是你不想要求图像提供者提供两个图像。有人会认为,生成一个缩略图,保存该副本以备将来使用是可以接受的

下面是我在服务器端用来缩小图像的一段代码:-

    private Bitmap ScaleImage(Image img, int divisor)
    {
        int toWidth = Math.Max(img.Width / divisor, 1);
        int toHeight = Math.Max(img.Height / divisor, 1);
        Bitmap result = new Bitmap(toWidth, toHeight);
        using (Graphics canvas = Graphics.FromImage(result))
        {
            canvas.DrawImage(img, 0, 0, toWidth, toHeight);
        }
        return result;
    }
然后,您可以使用以下命令将返回图像返回到某个BLOB流:-

img.Save(someStream, ImageFormat.Jpeg);