C#实现图片压缩及裁剪
注意引用动态库
System.Drawing.dll下载链接
提取码:sl4e
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;
}