zoukankan      html  css  js  c++  java
  • C# 缩略图算法

     代码写多了,有些使用过的方法和技巧会一时半会想不起来,平日记录下来,方便自己和有需要的人日后查阅。

    using (var stream = new FileStream(physicalPath, FileMode.Open, FileAccess.Read))
    {
        Bitmap target = null;
        int targetWidth, targetHeight;
        try
        {
            using (var bitmap = new Bitmap(stream))
            {
                var size = bitmap.PhysicalDimension; 
                if (size.Width > size.Height)
                {
                    if (size.Width > _maximumWidth)
                    {
                        targetWidth = _maximumWidth;
                        targetHeight = (int)size.Height * _maximumWidth / (int)size.Width;
                    }
                    else
                    {
                        targetWidth = (int)size.Width;
                        targetHeight = (int)size.Height;
                    }
    
                    if (targetHeight >= _maximumHeight)
                    {
                        targetWidth = targetWidth * _maximumHeight / targetHeight;
                        targetHeight = _maximumHeight;
                    }
                }
                else
                {
                    if (size.Height > _maximumHeight)
                    {
                        targetHeight = _maximumHeight;
                        targetWidth = (int)size.Width * _maximumHeight / (int)size.Height;
                    }
                    else
                    {
                        targetHeight = (int)size.Height;
                        targetWidth = (int)size.Width;
                    }
    
                    if (targetWidth >= _maximumWidth)
                    {
                        targetHeight = targetHeight * _maximumWidth / targetWidth;
                        targetWidth = _maximumWidth;
                    }
                }
    
                SizeF targetSize = SizeF.Empty;
    
                targetSize = new SizeF(targetWidth, targetHeight);
    
                target = new Bitmap(targetWidth, targetHeight);
    using (var graphics = Graphics.FromImage(target)) { graphics.CompositingQuality = compositingQuality; graphics.InterpolationMode = interpolationMode; graphics.CompositingMode = CompositingMode.SourceCopy; graphics.DrawImage(bitmap, 0, 0, targetSize.Width, targetSize.Height); } } context.Response.ContentType = "image/jpg"; using (MemoryStream memoryStream = new MemoryStream()) { target.Save(memoryStream, ImageFormat.Jpeg); memoryStream.WriteTo(context.Response.OutputStream); } } finally { if (target != null) { target.Dispose(); } } }
  • 相关阅读:
    vue+element 通过checkbox控制el-table-column的显示或隐藏
    Vue 路由跳转相同路径页面不刷新
    Cookie的domain以及path详解
    Vue移动端项目如何使用手机预览调试
    vue SSR服务端渲染
    vue服务端渲染(ssr)与普通vue的区别,ssr的基本使用
    Vue SSR 插件Genesis
    br压缩算法
    Ant Design 自定义表单控件
    gorm出现incorrect datetime value '0000-0-0 00:00:00' for column问题
  • 原文地址:https://www.cnblogs.com/joysoy/p/3536870.html
Copyright © 2011-2022 走看看