c#改变图片大小和限定文件大小

//更改图片大小voidchangeSize(stringstrImgPath,stringstrChangeFile,intnewWidth){//strImgPath... //更改图片大小
void changeSize(string strImgPath, string strChangeFile, int newWidth)
{ //strImgPath为要更改大小的图片路径,strChangeFile为文件保存的路径(包括jpg文件名),newWidth为新的宽度大小
pic = new Bitmap(strImgPath);
Bitmap newpic = new Bitmap((System.Drawing.Image)pic);
float k = (float)newWidth / (float)newpic.Width;
int newHeight = (int)(k * newpic.Height);
savepic = new Bitmap(newpic, newWidth, newHeight);
savepic.Save(strChangeFile);
}
--------------------------
我是这样写的,但是改变大小后图片都很大,不懂得改图片的压缩率,求教。直接给代码吧

要求是,通过浏览选中一张图片,然后点击button开始,转换大小固定为宽400px,转换后文件大小要小于100k。
给出完整代码,追加分数,谢谢~
展开
 我来答
鲁海123
推荐于2017-11-26 · TA获得超过283个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:323万
展开全部
/// <summary>
    /// 生成缩略图
    /// </summary>
    /// <param name="serverImagePath">图片地址</param>
    /// <param name="thumbnailImagePath">缩略图地址</param>
    /// <param name="width">图片宽度</param>
    /// <param name="height">图片高度</param>
    /// <param name="p"></param>
    public static void GetThumbnail(string serverImagePath, string thumbnailImagePath, int width, int height)
    {
        System.Drawing.Image serverImage = System.Drawing.Image.FromFile(serverImagePath);
        //画板大小
        int towidth = width;
        int toheight = height;
        //缩略图矩形框的像素点
        int x = 0;
        int y = 0;
        int ow = serverImage.Width;
        int oh = serverImage.Height;

        if (ow > oh)
        {
            toheight = serverImage.Height * width / serverImage.Width;
        }
        else
        {
            towidth = serverImage.Width * height / serverImage.Height;
        }
        //新建一个bmp图片
        System.Drawing.Image bm = new System.Drawing.Bitmap(width, height);
        //新建一个画板
        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
        //设置高质量插值法
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
        //设置高质量,低速度呈现平滑程度
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //清空画布并以透明背景色填充
        g.Clear(System.Drawing.Color.White);
        //在指定位置并且按指定大小绘制原图片的指定部分
        g.DrawImage(serverImage, new System.Drawing.Rectangle((width - towidth) / 2, (height - toheight) / 2, towidth, toheight),
            0, 0, ow, oh,
            System.Drawing.GraphicsUnit.Pixel);
        try
        {
            //以jpg格式保存缩略图
            bm.Save(thumbnailImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        catch (System.Exception e)
        {
            throw e;
        }
        finally
        {
            serverImage.Dispose();
            bm.Dispose();
            g.Dispose();
        }
    }
fej121121
2014-03-07 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:532万
展开全部
因为你没有压缩图片 改为:
savepic.Save(strChangeFile,System.Drawing.Imaging.ImageFormat.Jpeg);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式