0
点赞
收藏
分享

微信扫一扫

C#实现图片压缩及裁剪

艾米吖 2022-05-03 阅读 36

C#实现图片压缩及裁剪

注意引用动态库
System.Drawing.dll下载链接
提取码:sl4e
Drawing

using System.Drawing;
using System.Drawing.Imaging;

压缩

压缩是一种通过特定的算法来减小计算机文件大小的机制。这种机制是一种很方便的发明,尤其是对网络用户,因为它可以减小文件的字节总数,使文件能够通过较慢的互联网连接实现更快传输,此外还可以减少文件的磁盘占用空间。

/// <summary>
/// 压缩图片
/// </summary>
/// <param name="str">图片路径</param>
/// <param name="save">保存路径</param>
public void savePath(string str, string save)
{
     Bitmap bmp = new Bitmap(str);
     bmp = crop(bmp);//裁剪图片
     ImageCodecInfo myImageCodecInfo;
     System.Drawing.Imaging.Encoder myEncoder;
     EncoderParameter myEncoderParameter;
     EncoderParameters myEncoderParameters;

     myImageCodecInfo = GetEncoderInfo("image/jpeg");
     myEncoder = System.Drawing.Imaging.Encoder.Quality;
     myEncoderParameters = new EncoderParameters(1);
     myEncoderParameter = new EncoderParameter(myEncoder, 80L);//80L代表保存图片的质量,还可以设置50L、25L等等,数值越小图片质量越差。
     myEncoderParameters.Param[0] = myEncoderParameter;
     bmp.Save(save, myImageCodecInfo, myEncoderParameters);
 }

裁剪

有的图片中会有多余的干扰物体(或很难看,影响画面美观),可以通过裁剪把它们排除掉;还有的图片比例不一样,有4:3的,也有 3:2 或 16:9 的,但这样的图片其实并不一定符合实际应用的需要,这也可以通过裁剪出对应的比例。

private Bitmap crop(Bitmap src)
{
    Rectangle cropRect = new Rectangle(int.Parse((src.Width * 0.1).ToString()),//裁剪起始宽度
	    int.Parse((src.Height * 0.1).ToString()),//裁剪起始高度
	    int.Parse((src.Width*0.8).ToString()),//裁剪宽度
	    int.Parse((src.Height * 0.8).ToString())//裁剪高度
    );
    Bitmap target = new Bitmap(cropRect.Width, cropRect.Height);

    using (Graphics g = Graphics.FromImage(target))
    {
        g.DrawImage(src, 
        	new Rectangle(0,0, target.Width, target.Height),
            cropRect,
            GraphicsUnit.Pixel
		);
    }
    return target;
}
举报

相关推荐

0 条评论