FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2823|回复: 4
打印 上一主题 下一主题

为FileUpload添加保存为指定大小图片的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-23 12:28:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下载Fineui源码 打开项目找到WebControls\Field.TextField.RealTextField.FileUpload\FileUpload.cs

添加下面代码
  1. /// <summary>
  2.         /// 将上载的图片保存到 Web 服务器上的指定路径
  3.         /// </summary>
  4.         /// <param name="filename">保存的文件的名称</param>
  5.         /// <param name="resize_width">保存图片的宽度</param>
  6.         /// <param name="resize_height">保存图片的高度</param>
  7.         public void SaveImage(string filename, int resize_width, int resize_height)
  8.         {
  9.             SaveImage(filename, resize_width, resize_height, Color.Transparent, System.Drawing.Imaging.ImageFormat.Jpeg);
  10.         }

  11.         /// <summary>
  12.         /// 将上载的图片保存到 Web 服务器上的指定路径
  13.         /// </summary>
  14.         /// <param name="filename">保存的文件的名称</param>
  15.         /// <param name="resize_width">保存图片的宽度</param>
  16.         /// <param name="resize_height">保存图片的高度</param>
  17.         /// <param name="backgroud_color">保存图片不足部分的填充色</param>
  18.         /// <param name="image_format">保存图片的指定格式</param>
  19.         public void SaveImage(string filename, int resize_width, int resize_height, Color backgroud_color, System.Drawing.Imaging.ImageFormat image_format)
  20.         {
  21.             if (HasFile)
  22.             {
  23.                 System.Drawing.Image original_image = System.Drawing.Image.FromStream(PostedFile.InputStream);
  24.                 int width = original_image.Width;
  25.                 int height = original_image.Height;
  26.                 int target_width = resize_width;
  27.                 int target_height = resize_height;
  28.                 int new_width, new_height;
  29.                 float target_ratio = (float)target_width / (float)target_height;
  30.                 float image_ratio = (float)width / (float)height;
  31.                 if (target_ratio > image_ratio)
  32.                 {
  33.                     new_height = target_height;
  34.                     new_width = (int)Math.Floor(image_ratio * (float)target_height);
  35.                 }
  36.                 else
  37.                 {
  38.                     new_height = (int)Math.Floor((float)target_width / image_ratio);
  39.                     new_width = target_width;
  40.                 }
  41.                 new_width = new_width > target_width ? target_width : new_width;
  42.                 new_height = new_height > target_height ? target_height : new_height;

  43.                 System.Drawing.Bitmap final_image = new System.Drawing.Bitmap(target_width, target_height);
  44.                 System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(final_image);
  45.                 graphic.FillRectangle(new System.Drawing.SolidBrush(backgroud_color), new System.Drawing.Rectangle(0, 0, target_width, target_height));
  46.                 int paste_x = (target_width - new_width) / 2;
  47.                 int paste_y = (target_height - new_height) / 2;
  48.                 graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
  49.                 graphic.DrawImage(original_image, paste_x, paste_y, new_width, new_height);
  50.                 final_image.Save(filename, image_format);
  51.             }
  52.         }
  53.                
复制代码

编译FineUI源码项目 替换项目的DLL文件

沙发
发表于 2014-9-23 14:55:19 | 只看该作者
{:soso_e179:}顶
板凳
发表于 2014-9-24 22:26:49 | 只看该作者
代码有许多问题,建议下载个上传图片工具类
地板
发表于 2014-9-24 22:43:36 | 只看该作者
5#
发表于 2014-9-24 22:44:00 | 只看该作者
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-25 22:30 , Processed in 0.044917 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表