首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET中生成图像缩略图?

在ASP.NET中生成图像缩略图?
EN

Stack Overflow用户
提问于 2011-05-04 18:55:58
回答 7查看 11.6K关注 0票数 17

在.NET中生成缩略图的最快、最可靠的方法是什么?我需要得到任何图像,压缩它在JPEG和调整它的大小。

我看过几个GDI+的例子,一些非免费的组件,我记得WPF有一些关于映像的好东西。GDI+已经很旧了,它在服务器环境中可能没有任何好处。

这必须在完全信任的ASP.NET MVC应用程序中工作,如果可能的话,还要同步运行。

你有什么推荐的?

更新:

基于Mantorok's answer,我已经解决了这个例子,但它仍然是GDI+,如果我尝试处理大图,它就会崩溃:

代码语言:javascript
复制
public void GenerateThumbnail(String filename, Int32? desiredWidth, 
    Int32? desiredHeight, Int64 quality, Stream s)
{
    using (Image image = Image.FromFile(filename))
    {
        Int32 width=0, height=0;

        if ((!desiredHeight.HasValue && !desiredWidth.HasValue) ||
            (desiredHeight.HasValue && desiredWidth.HasValue))
            throw new ArgumentException(
                "You have to specify a desired width OR a desired height");

        if (desiredHeight.HasValue)
        {
            width = (desiredHeight.Value * image.Width) / image.Height;
            height = desiredHeight.Value;
        }
        else
        {
            height = (desiredWidth.Value * image.Height) / image.Width;
            width = desiredWidth.Value;
        }

        using (var newImage = new Bitmap(width, height))
        using (var graphics = Graphics.FromImage(newImage))
        using (EncoderParameter qualityParam = 
            new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 
                quality))
        using (EncoderParameters encoderParams = new EncoderParameters(1))
        {
            graphics.DrawImage(image, 0, 0, width, height);
            ImageCodecInfo jpegCodec = ImageCodecInfo.GetImageEncoders().
                Single(e => e.MimeType.Equals("image/jpeg", 
                    StringComparison.Ordinal));
            encoderParams.Param[0] = qualityParam;
            newImage.Save(s, jpegCodec, encoderParams);
        }
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5882307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档