1.Ajax无刷新上传图片,详情请阅我的这篇文章。(jquery + c# ashx)

2.C#位图处理  System.Drawing。

3.最新demo支持IE7,IE8,FireFox。

生成微缩图的核心方法:

CreateThumbnailPicture/// <summary>/// 图片微缩图处理/// </summary>/// <param name="srcPath">源图片</param>/// <param name="destPath">目标图片</param>/// <param name="width">宽度</param>/// <param name="height">高度</param>public static void CreateThumbnailPicture(string srcPath, string destPath, int width, int height){//根据图片的磁盘绝对路径获取 源图片 的Image对象System.Drawing.Image img = System.Drawing.Image.FromFile(srcPath);//bmp: 最终要建立的 微缩图 位图对象。Bitmap bmp = new Bitmap(width, height);//g: 绘制 bmp Graphics 对象Graphics g = Graphics.FromImage(bmp);g.Clear(Color.Transparent);//为Graphics g 对象 初始化必要参数,很容易理解。g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;//源图片宽和高int imgWidth = img.Width;int imgHeight = img.Height;//绘制微缩图g.DrawImage(img, new System.Drawing.Rectangle(0, 0, width, height), new System.Drawing.Rectangle(0, 0, imgWidth, imgHeight), GraphicsUnit.Pixel);ImageFormat format = img.RawFormat;ImageCodecInfo info = ImageCodecInfo.GetImageEncoders().SingleOrDefault(i => i.FormatID == format.Guid);EncoderParameter param = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);EncoderParameters parameters = new EncoderParameters(1);parameters.Param[0] = param;img.Dispose();//保存已生成微缩图,这里将GIF格式转化成png格式。if (format == ImageFormat.Gif){destPath = destPath.ToLower().Replace(".gif", ".png");bmp.Save(destPath, ImageFormat.Png);}else{if (info != null){bmp.Save(destPath, info, parameters);}else{bmp.Save(destPath, format);}}img.Dispose();g.Dispose();bmp.Dispose();}

下面介绍ashx中AJAX调用方法,我们在AJAX异步上传图片成功后对源图片进行"PS"。关键代码片段如下:

//上传成功后网站内源图片相对路径string relativePath = System.Web.HttpContext.Current.Request.ApplicationPath + string.Format(@"Content/Upload/Images/{0}", fileName);/*比例处理微缩图高度(DefaultHeight属性值为 400)*/System.Drawing.Image img = System.Drawing.Image.FromFile(toFile);int width = img.Width;int height = img.Height;float ratio = (float)width / height;//微缩图高度和宽度int newHeight = height <= DefaultHeight ? height : DefaultHeight;int newWidth = height <= DefaultHeight ? width : Convert.ToInt32(DefaultHeight * ratio);FileInfo generatedfile = new FileInfo(toFile);string newFileName = "Thumb_" + generatedfile.Name;string newFilePath = Path.Combine(generatedfile.DirectoryName, newFileName);PictureHandler.CreateThumbnailPicture(toFile, newFilePath, newWidth, newHeight);string thumbRelativePath = System.Web.HttpContext.Current.Request.ApplicationPath + string.Format(@"/Content/Upload/Images/{0}", newFileName);//返回原图和微缩图的网站相对路径relativePath = string.Format("{0},{1}", relativePath, thumbRelativePath);return relativePath;

demo 见附件http://dl2.iteye.com/upload/attachment/0109/2590/06f8f52b-f228-35c3-9391-6b43bd18e3d6.rar

C# Ajax上传图片同时生成微缩图(附Demo)相关推荐

  1. C#也能PS图片,还能为网站Ajax上传图片同时生成微缩图(附Demo)

    C#也能PS图片,还能为网站Ajax上传图片同时生成微缩图(附Demo) 本文旨在与各位朋友们分享我是如何在项目中用C# "ps图片" 为网站生成同比例微缩图的解决方案.如有不足之 ...

  2. c++序列号生成(注册码)附demo

    VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 软件注册码生成 注册机程序,这是一个成型软件必走的路 ,共享软件或者国外的软件都是采用这种模式,需要构买注册码,或者在线注册发送授权码的模 ...

  3. ssm 上传图片到mysql_MySQL+SSM+Ajax上传图片问题的分析(图)

    本文主要介绍了MySQL+SSM+Ajax上传图片问题.具有很好的参考价值.下面跟着小编一起来看下吧 第一次写上传图片的代码,碰到很多问题.昨天做了整整一天,终于在晚上的时候成功了.大声欢呼. 但是, ...

  4. php ajax多图上传预览,Ajax上传图片及先预览功能的实现方法

    最近有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果, ...

  5. thinkphp5通过ajax上传图片并预览

    thinkphp5通过ajax上传图片并预览 一.具体需求如图所术: 二.html代码: 三.js代码 四.控制器php代码: 一.具体需求如图所术: 二.html代码: <form class ...

  6. asp.net中上传图片并生成小图片,自动添加水印的代码 .

    asp.net中上传图片并生成小图片,自动添加水印的代码 分类: .Net(C#) 2010-03-22 15:28 242人阅读 评论(0) 收藏 举报 /// 上传图片生成缩略图及水印 (来自:h ...

  7. 发布文章自动上传图片并生成水印

    前段时间在网上看到新浪有一个提交文本(Html代码),自动上传图片的功能,觉得倒是很[实用,稍一琢磨,自己也写了这么一个东东. 根据所传入的Html代码,获取标签中的图片标签,将图片复制到当前服务器, ...

  8. python曲线图数据爬取_python爬取二手房库存,存数数据库,生成折线图(上)

    python爬取二手房库存,存数据库,生成折线图(上) 想着快要买房了,可是房价又那么的贵.那么为啥不是自己爬点二手房的价格走势图.看看那里的房子适合自己(虫啊!!!) 打算用python3 djan ...

  9. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  10. php微信手机端上传图片,手机Wap微信端上传单图和上传多图的DEMO

    在手机端或者微信端的论坛或者报名等界面需要上传头像或者多张图片信息等.这个时候就需要用到手机端的上传图片功能,现在微信端也可以使用input file功能了.多图上传使用的都是ajax方式.ajax返 ...

最新文章

  1. 再谈新浪微博架构——视频观后笔记
  2. acwing——每日一题——总结
  3. Python爬取小说
  4. 海底捞员工:假笑到脸僵,撑到经理月入20万
  5. 为什么我建议你这样实现MySQL分页
  6. shell获取git最近一次提交信息_我低估了PowerShell:一个提取Git提交记录并生成文件Diff列表的脚本案例...
  7. 贵州省二级分类土地利用数据(矢量)
  8. MAC机上JAVA对话框死锁的案例之一
  9. 《数据结构导论自考知识点(自己总结)》
  10. win7下安装python库的若干问题
  11. PHP 获取格式化的日期和时间
  12. Selenium结合HttpWatch进行Web自动化测试(实时获取页面性能)
  13. Linux v4l2 一 应用层
  14. 90后凤凰男:寒门难出贵子
  15. QT项目-“kun容道”
  16. CuO-SBA-15分子筛催化氧化苯甲醇制苯甲醛|单宁酸修饰磁性Fe3O4/SBA-15纳米粒子|CuO/SBA-15介孔材料催化剂
  17. Java实现发邮件功能
  18. MikTex 和 TexStudio 输入中文日文
  19. Zbrush一些基本操作
  20. html5绘制随机五角星_HTML5 canvas基本绘图之绘制五角星

热门文章

  1. 开放平台-web实现QQ第三方登录
  2. Delphi/Pascaldelphi盒子
  3. PHP 运行后出现The requested URL was not found on this server.
  4. 最新的AOC有源光缆介绍,看这一篇就够了
  5. python爬虫网页图片显示不出来_网页爬虫 - python下载的图片不显示,无法查看
  6. Stata绘制分类带可信区间的折线图
  7. Kafka:增加Topic的分区数
  8. oracle查看job运行,oracle job使用详解及job不运行的检查方法
  9. 数学家们是怎么玩趣味拼图游戏的?
  10. 图像处理的相关数学知识