• 发的第一篇文章


    在做图片网站时,经常会遇到图片过大,没法上传空间的问题,本人在做套图站时,也遇到这个问题,空间只有5G,每张图片要5M,这样放不下千张,空间就用完了,没办法,只好想方法压缩图片,该文介绍用C#写的裁剪函数和压缩函数,把图片尺寸控制在1200宽的像素,然后进行压缩,图片能缩减到100kb上下,这样,有很多图片可以上传。贴出算法,给大家分享一下经验,希望对朋友有帮助:

    ```csharp
    //将图片控制在宽度为1200像素
    public static Bitmap PercentImage(System.Drawing.Image srcImage)
    {
    int newW = srcImage.Width < 1200 ? srcImage.Width : 1200;
    int newH = int.Parse(Math.Round(srcImage.Height * (double)newW / srcImage.Width).ToString());
    try
    {
    Bitmap b = new Bitmap(newW, newH);
    Graphics g = Graphics.FromImage(b);
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
    g.DrawImage(srcImage, new System.Drawing.Rectangle(0, 0, newW, newH), new System.Drawing.Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
    g.Dispose();
    return b;
    }
    catch (Exception)
    {
    return null;
    }
    }
    //将图片按百分比压缩,flag取值1到100,越小压缩比越大
    public static bool YaSuo(System.Drawing.Image iSource, string outPath, int flag)
    {
    ImageFormat tFormat = iSource.RawFormat;
    EncoderParameters ep = new EncoderParameters();
    long[] qy = new long[1];
    qy[0] = flag;
    EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
    ep.Param[0] = eParam;
    try
    {
    ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageDecoders();
    ImageCodecInfo jpegICIinfo = null;
    for (int x = 0; x < arrayICI.Length; x++)
    {
    if (arrayICI[x].FormatDescription.Equals("JPEG"))
    {
    jpegICIinfo = arrayICI[x];
    break;
    }
    }
    if (jpegICIinfo != null)
    iSource.Save(outPath, jpegICIinfo, ep);
    else
    iSource.Save(outPath, tFormat);
    iSource.Dispose();
    return true;
    }
    catch
    {
    iSource.Dispose();
    return false;
    }
    }
    ```
    进过反复实验,将压缩比定在60,足以将一副500kb大的图片,压缩成180kb左右,且在宽屏显示器上无明显降低图片质量.

  • 相关阅读:
    qt 学习(三)消息基础
    qt学习(二)控件
    sqlserver学习_01
    java对文件操作--01
    js 将json字符串转换为json对象的方法解析
    实现动态代理(Java和spring)
    mysql_01_游标的使用
    java实现多文件上传01
    oracle-2_dblink的创建和使用
    sqlserver学习3---sql函数
  • 原文地址:https://www.cnblogs.com/MichaeljiangYu/p/13725262.html
Copyright © 2020-2023  润新知