c# 图片压缩-C#如何把用户上传的图片文件压缩,然后再把压缩后的图片保存到服务器上?
C#实现图片压缩方法

这个是未经优化的简单实现
public static System Drawing Image GetImageThumb(System Drawing Image sourceImg int width int height) { System Drawing Image targetImg = new System Drawing Bitmap(width height); using (System Drawing Graphics g = System Drawing Graphics FromImage(targetImg)) { g InterpolationMode = System Drawing Drawing D InterpolationMode High; g SmoothingMode = System Drawing Drawing D SmoothingMode HighQuality; g InterpolationMode = System Drawing Drawing D InterpolationMode HighQualityBicubic; g CompositingQuality = System Drawing Drawing D CompositingQuality HighQuality; g PixelOffsetMode = System Drawing Drawing D PixelOffsetMode HighQuality; g DrawImage(sourceImg new System Drawing Rectangle( width height) new System Drawing Rectangle( sourceImg Width sourceImg Height) System Drawing GraphicsUnit Pixel); g Dispose(); } return targetImg; }
这个方法比较简单 用到的是高质量压缩 经过这个方法压缩后 K的图片只能压缩到 k左右
经过改写代码实现了如下的方法
public Bitmap GetImageThumb(Bitmap mg Size newSize) { double ratio = d; double myThumbWidth = d; double myThumbHeight = d; int x = ; int y = ; Bitmap bp; if ((mg Width / Convert ToDouble(newSize Width)) > (mg Height / Convert ToDouble(newSize Height))) ratio = Convert ToDouble(mg Width) / Convert ToDouble(newSize Width); else ratio = Convert ToDouble(mg Height) / Convert ToDouble(newSize Height); myThumbHeight = Math Ceiling(mg Height / ratio); myThumbWidth = Math Ceiling(mg Width / ratio); Size thumbSize = new Size((int)newSize Width (int)newSize Height); bp = new Bitmap(newSize Width newSize Height); x = (newSize Width thumbSize Width) / ; y = (newSize Height thumbSize Height); System Drawing Graphics g = Graphics FromImage(bp); g SmoothingMode = SmoothingMode HighQuality; g InterpolationMode = InterpolationMode HighQualityBicubic; g PixelOffsetMode = PixelOffsetMode HighQuality; Rectangle rect = new Rectangle(x y thumbSize Width thumbSize Height); g DrawImage(mg rect mg Width mg Height GraphicsUnit Pixel); return bp; }
这样实现的压缩使压缩率大幅度上升 其实代码并没有变多少 最主要的是在保存的时候要是用jpg格式
如果不指定格式 默认使用的是png格式
下面这个是园友写的根据设置图片质量数值来压缩图片的方法
lishixinzhi/Article/program/net/201311/14025
C#代码实现图片压缩至40K以下

任何压缩算法的压缩比都不能无限的提高的。
最有效地方法就是降低图片的分辨率,即像素值。图片的每个像素占用4个字节,假设一般JPG格式的压缩比为1:10的话,40K字节最多只能储存 40000/4*10 = 10万像素的图片,即图片的长乘以宽不超过10万,一般图片长宽比是4:3;所以图片的大小最好不超过 360 X 270 。
降低图片的分辨率就是缩小图片,用Graphics对象、Bitmap对象就能做到。
Bitmap bmpDest = new Bitmap(360,270);
Bitmap bmpSrc = new Bitmap("");
Graphics g = (bmpDest);
g.DrawImage(bmpSrc, rectDest,rectSrc,);
或者将PictureBox的长和宽限定在360 X 270
C#如何把用户上传的图片文件压缩,然后再把压缩后的图片保存到服务器上?

你说的压缩,实际上就是生成缩略图。
你利用 生成缩略图后,缩略图可以直接保存到服务器上成为文件,不需要再保存到 postedFile 中了。
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注