asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

在ASP.NET中上传图片并生成缩略图 本文详细介绍在ASP.NET中上传图片并生成缩略图   在ASP.NET中上传图片并生成缩略图! 立即下载
在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式.

        
/// <summary>
        
/// 生成缩略图
        
/// </summary>
        
/// <param name="originalImagePath">源图路径(物理路径)</param>
        
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
        
/// <param name="width">缩略图宽度</param>
        
/// <param name="height">缩略图高度</param>
        
/// <param name="mode">生成缩略图的方式</param>    

        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
        
{
            Image originalImage 
= Image.FromFile(originalImagePath);
            
            
int towidth = width;
            
int toheight = height;
        
            
int x = 0;
            
int y = 0;
            
int ow = originalImage.Width;
            
int oh = originalImage.Height;        

            
switch (mode)
            
{        
                
case "HW"://指定高宽缩放(可能变形)                
                    break;
                
case "W"://指定宽,高按比例                    
                    toheight = originalImage.Height * width/originalImage.Width;
                    
break;
                
case "H"://指定高,宽按比例
                    towidth = originalImage.Width * height/originalImage.Height;                    
                    
break;        
                
case "Cut"://指定高宽裁减(不变形)                
                    if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
                    
{
                        oh 
= originalImage.Height;
                        ow 
= originalImage.Height*towidth/toheight;
                        y 
= 0;
                        x 
= (originalImage.Width - ow)/2;
                    }

                    
else
                    
{
                        ow 
= originalImage.Width;
                        oh 
= originalImage.Width*height/towidth;
                        x 
= 0;
                        y 
= (originalImage.Height - oh)/2;
                    }

                    
break;                    
                
default :
                    
break;
            }
    
            
            
//新建一个bmp图片
            Image bitmap = new System.Drawing.Bitmap(towidth,toheight);

            
//新建一个画板
            Graphics g = System.Drawing.Graphics.FromImage(bitmap);

            
//设置高质量插值法
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

            
//设置高质量,低速度呈现平滑程度
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            
//清空画布并以透明背景色填充
            g.Clear(Color.Transparent);        

            
//在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), 
                
new Rectangle(x, y, ow,oh),
                GraphicsUnit.Pixel);

            
try
            
{            
                
//以jpg格式保存缩略图
                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
            }

            
catch(System.Exception e)
            
{
                
throw e;
            }

            
finally
            
{
                originalImage.Dispose();
                bitmap.Dispose();                        
                g.Dispose();
            }

        }


关键方法Graphics.DrawImage见ms
-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
 
一个原创的函数图象绘制软件(C# WPF 含源码) 一个自己写的函数图象绘制软件。 支持初高中教材中的各种基本函数类型,以及其它的自定义函数, 支持一阶至三阶求导数后绘制, 支持精度调整和颜色设置, 支持增加分辨率后保存图象。 带源码(Visual Studio 2012),有详细注释,带曲线绘制的算法说明。 需要 Win 7/8,需要 .NET Framework 4.5。 立即下载

相关推荐

超好用的二维码生成插件

利用QRCode.js的new QRCode({})接口定义生成二维码的大小,颜色,背景等属性的设置,通过qrcode.makeCode方法接口,将要生成二位码的信息传入,再生成二维码图片!

C#创建高质量(清晰)缩略图——动态调整大小

创建高质量(清晰)缩略图——动态调整大小Bitmap类的GetThumbnailImage方法可以从指定的图像文件中生成缩略图,用法非常简单。但是并不总是这样,有时生成的缩略图的质量很差——模糊不清!为什么会这样?为什么生成的图片是模糊的?像JPEG这样格式的图像可能把缩略图存在同一个文件中。如果我们使用System.Drawing.Bitmap的GetThumbnailImage方法会...

dengdie3499的博客 483

c#函数图像查看器-可以查看积分、导数

功能介绍: 鼠标拖拉 滚动缩放 函数导数、积分(x=0,积分为0 等 )、原图像、辅助坐标网绘制等 自己写的, 可能会有些地方不太完善 http://blog.csdn.net/fanchenj

C#图片处理之: 另存为压缩质量可自己控制的JPEG

处理图片时常用的过程是:读入图片文件并转化为Bitmap -> 处理此Bitmap的每个点以得到需要的效果 -> 保存新的Bitmap到文件使用C#很方便的就可以把多种格式的图片文件读到Bitmap对象中。一句话就够了,常见的格式都支持,诸如JPEG,BMP,PNG等等。Bitmap bmp = new Bitmap("文件名");然后就是怎么处理这个图片的问题了,与本案无关,pass。

ki1381的专栏 1万+

Flutter UI代码生成实战:Cursor与MCP的企业级规范适配

本文探讨了在企业级Flutter项目中,如何通过配置Cursor Rules与定制Figma MCP工具,为AI代码生成设定严格的开发规范。该方法解决了AI生成代码与现有项目架构、命名约定及资源引用规范脱节的核心痛点,实现了从Figma设计稿到高质量、可维护Flutter UI代码的自动化流程,显著提升团队协作效率与代码一致性。

http9protocoller的博客 280

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

1、算法说明经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。经过P点的入射光线没有透镜的话,本应交于相机成像平面的e点。然而,经过鱼眼相机的折射,光线会交于相机成像平面的d点,就产生了畸变,因此畸变图像整体上呈现出像素朝图像中心点聚集的态势。而去畸变,就是将折射到d点的点,重新映射回到e点,因此去畸变之后的图像与原始的鱼眼图像相比,仿佛是把向心聚集的像素又重新向四周铺展开来。AVM环视系统——鱼眼相机去畸变算法 - 知乎。

大胡子大叔的专栏 2万+

C# GDI 画 一次函数图像

老规矩,先看图: 图1 下面上代码: 1.先画坐标系。盛放的容器为一个size(400,400)的pictureBox。先写一个画坐标轴(箭头)的函数。 int Height = 400, Width = 400; Pen redArrowPen = new Pen(Color.Black, 1); private void Axis(int X1,int Y1, int X2, int Y2)//坐标轴 { System.Drawing.Drawing2D.Ad

qq_42729858的博客 1437

Elasticsearch连接中断:深入解析Connection reset by peer问题及优化策略

本文深入解析Elasticsearch连接中断问题,特别是Connection reset by peer错误的成因与解决方案。从TCP层的心跳机制到客户端与服务端的配置差异,详细介绍了网络不稳定、防火墙拦截等常见原因,并提供了六种优化策略,包括KeepAlive调整、TCP参数调优和智能重试机制等,帮助提升Elasticsearch连接的稳定性。

weixin_42546392的博客 410

画函数图形的C#程序

可以看到,不但要画的函数的表达式可以由用户动态地输入,而且函数自变量的范围也可以是常量表达式。 下面就是源程序: // plot.cs: 画函数图形, 编译方法: csc /t:winexe plot.cs Expression.cs using System; using System.Drawing; using System.Windows.Forms; us

WavingBear 4035

PyTorch实战:手把手教你用QAT量化感知训练拯救模型精度(附避坑指南)

本文详细介绍了如何使用PyTorch进行QAT量化感知训练,以提升模型在边缘设备上的推理精度。通过核心原理讲解、实战代码示例和避坑指南,帮助开发者掌握从环境配置、模型训练到边缘部署的全流程,有效解决传统量化方法导致的精度损失问题。

c7d8e的博客 329

OpenWrt kmod内核不兼容?手把手教你用脚本强制安装驱动模块(附国内镜像源)

本文详细解决了OpenWrt kmod内核不兼容问题,提供智能脚本强制安装驱动模块的方法,并附有国内镜像源加速配置。通过自动化脚本修改内核MD5校验值,确保kmod包正常安装,同时推荐多个国内镜像源以提升下载速度。

weixin_42549451的博客 542

ASP.NET生成高质量缩略图通用函数(C#代码),支持多种生成方式

<!--google_ad_client = "pub-3364426468695133";google_ad_width = 180;google_ad_height = 150;google_ad_format = "180x150_as";google_ad_type = "text";google_ad_channel = "";google_color

夏风鱼的专栏 442

性能优化-高通cDSP(QDSP6)架构详解

高通cDSP开发的商业价值30秒快速认识高通cDSP开发的商业价值【高通cDSP旨在处理一些简单但需要大量计算的场景,如图像处理、科学计算、AI训练、计算机视觉等。这些场景使用CPU来运算会极大的降低CPU的吞吐量,因此利用现代寄存器较宽的特性设计出了适配数据并行的DSP芯片,cDSP就是典型的代表。利用cDSP+CPU既可以满足一般的使用场景,也可以完成现代图像和视频数据的处理。

发狂的小花的博客 5945
上一篇: 做WEB2.0网站策划可以参考的五大步骤
下一篇: 弹出层锁定页面
yn098
博客等级 码龄21年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值