网上查了很多都写的很复杂了, 这里自己整理了一份,好像能够达到基本效果

if (System.Web.HttpContext.Current.Request.Files.Count == 0)
{
    throw new Exception("没有选择文件!");
}

//这里接收来自前台上传的图片(这里是直接从前台传过来的, 也可以通过URL自己读取file文件,最终是个file文件就行)
var file = System.Web.HttpContext.Current.Request.Files[0];

//文件将要压缩的比例(file.ContentLength是当前文件的大小,这里默认将文件压缩为1024kb,可以自己调)
double compressionRatio = 1024 * 1024 / Convert.ToDouble(file.ContentLength);
compressionRatio = Math.Round(compressionRatio, 2);

//上传文件转为byte数组
byte[] fileByte = new byte[file.ContentLength];
file.InputStream.Read(fileByte, 0, file.ContentLength);

//上传文件的byte数组转为Stream
MemoryStream ms = new MemoryStream(fileByte);
Image img = Image.FromStream(ms);

//按比例计算新的宽高
int toWidth = Convert.ToInt32(img.Width * compressionRatio);
int toHeight = Convert.ToInt32(img.Height * compressionRatio);

//按照新的宽高用画布重新画一张
Bitmap bitmap = new Bitmap(toWidth, toHeight);
Graphics g = Graphics.FromImage(bitmap);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.Clear(System.Drawing.Color.Transparent);
g.DrawImage(img, new System.Drawing.Rectangle(0, 0, toWidth, toHeight), new System.Drawing.Rectangle(0, 0, img.Width, img.Height), System.Drawing.GraphicsUnit.Pixel);

//将画好的bitmap转成stream(不一定费时stream,byte数组什么都可以)
var fileStream = new MemoryStream();

using (MemoryStream stream = new MemoryStream())
{
    bitmap.Save(stream, ImageFormat.Png);
    byte[] data = new byte[stream.Length];
    stream.Seek(0, SeekOrigin.Begin);
    stream.Read(data, 0, Convert.ToInt32(stream.Length));
    fileStream = new MemoryStream(data);
}

//至此,拿到压缩好的stream或者bytes或者什么什么的 不管是上传还是前台显示都可以了(#^.^#)

//不懂的可以自行百度 filestream转bytes,反正需要什么转什么

.net下如何压缩图片大小,超简单相关推荐

  1. 如何压缩图片大小?简单的图片压缩方法分享

    怎么压缩图片的大小呢?在日常生活中,我们经常需要在社交媒体上或者其他场合分享和使用照片,但是如果照片文件内存过大,上传或发送速度很慢,有的情况下还会出现上传失败的情况.遇到这种事情我们就需要将图片的大 ...

  2. 图片太大怎么办?如何压缩图片大小,这一招很简单

    压缩图片在我们的日常生活中运用的十分广泛,压缩图片的方法其实有很多种,不知道大家平时在上传图片的时候有没有遇到过像我一样的问题就是图片过大发送特别慢,甚至有些还发送不出去,这时候我们就需要将图片压缩变 ...

  3. 如何快速在线压缩图片大小(包括放大、缩小图片,指定图片尺寸和压缩图片品质)

    在日常的学习和工作中,我们经常会遇到压缩和修改图片大小的问题,如果我们不是专业的设计人员,一般电脑上不会安装ps软件,那么我们如何通过网页,在线快速简单的来完成操作呢?下面小编和大家一块分享下具体如何 ...

  4. 这几个小妙招让你学会如何压缩图片大小

    相信大家都有用相机拍照的习惯,我们有时为了抓拍更加清晰的照片,还会使用到单反相机进行拍摄.虽然单反相机拍摄出来的照片清晰,但保存下来的图片体积一张就要几十M,这样会很耗费存储设备的空间,那么有什么方法 ...

  5. 压缩照片大小的软件-免费压缩图片大小的软件

    压缩照片大小的软件,今天给大家分享一款免费照片批量压缩的软件,支持任意格式的照片压缩,不仅可以压缩照片还可以放大图片,支持批量照片自动水印.批量关键词采集全网图片,导入链接批量下载图片,整站图片下载导 ...

  6. 如何获取JPEG图片质量和预测压缩图片大小

    前言 发起这个博客的原因是近期有个需求,当用户在APP中发送图片时,APP要显示将图片压缩到指定尺寸的选项,选项中要显示压缩后图片的大小(占空间),出发点是为了控制上传流量.那转换成技术问题实际上就是 ...

  7. 怎么压缩图片大小?四招详解

    怎么压缩图片大小?实际上,图片压缩是一种将高分辨率的图片转换为低分辨率或更小尺寸的图像的过程,在现代生活和工作中具有很重要的作用.首先,压缩图片大小可以减少存储空间,压缩图片可以使图像文件大小变得更小 ...

  8. python课堂笔记手抄图片_超简单又漂亮的手抄报图片

    办手抄报是一项综合性训练,它融作文.书法.绘画于一体,可以有效地提高学生的思维能力.写作能力和审美能力.小编为大家带来的超简单手抄报图片简单又漂亮,希望大家喜欢. 超简单手抄报的图片欣赏 超简单手抄报 ...

  9. 图片太大,怎么压缩图片大小?

    图片太大,怎么压缩图片大小?我们知道图片被应用到生活的方方面面,所以我们经常会遇到因图片体积大半天打不开,或者是因为图片大好传送不过去.再或者因为图片太多内存不够等等情况,总之可能会带来很多我们预想不 ...

  10. 如何免费压缩图片-批量免费压缩图片大小的软件

    如何免费压缩图片,今天给大家分享一款免费压缩图片的软件,支持任意格式的照片压缩,不仅可以压缩照片还可以放大图片,支持批量照片自动水印.批量关键词采集全网图片,导入链接批量下载图片,整站图片下载导出.详 ...

最新文章

  1. java web常用权限方式,java web项目的几种权限控制方法
  2. sql java blob_JAVA和SQL关于BLOB的很大的问题?……
  3. FusionCharts图表标题的参数设置
  4. 开机显示c:\windows\windows32\config\system文件损坏或丢失的解决方法(收集)
  5. html无法引入less样式,@import less样式文件 只有css样式生效, less样式却不生效
  6. doremi服务器可以导出文件,Doremi服务器检查与IMB 的通信-放映技术论坛
  7. 【Python】字符串反转
  8. UIScroll和UIPickView
  9. 多学一点(十三)——解决Linux kdump服务启动失败
  10. 【排序】排序算法之分配排序
  11. Windows 10 Office文件图标异常处理(Word | Excel | Powerpoint图标白色、右键新建找不到文件)
  12. Uber上市即破发 CEO安慰员工:Facebook和亚马逊上市后股价表现也不好
  13. 考研二战日记-第34天——高数6.2可分离变量的微分方程
  14. XcodeDebug---Instrument
  15. KVM是什么 机柜 机架服务器 怎么用
  16. MES和ERP在生产过程优化上,谁更胜一筹?
  17. 2020年西式面点师(高级)考试题及西式面点师(高级)考试内容
  18. Google Play发布android app
  19. matlab画相轨迹,非线性振动系统相轨迹对应波形图的绘制方法
  20. leetcode top interview题目补充

热门文章

  1. Live2D 博客页面添加板娘
  2. Unity 使用Socket 简单实现通讯
  3. python制作中文词云图_Python3制作中文词云图
  4. Win10笔记本电脑怎么直接重置初始化
  5. 打印机状态错误怎么办 打印机状态错误具体的解决方法
  6. Delphi第三方控件大测评
  7. gitLab注册There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.
  8. GitLab(三)创建用户
  9. 张帅帅学Java之注释
  10. DiskPart-删除磁盘分区