You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace SlnMesnac.Common
|
|
{
|
|
public class ImageHelper
|
|
{
|
|
#region 单例实现
|
|
private static readonly ImageHelper lazy = new ImageHelper();
|
|
public static ImageHelper Instance
|
|
{
|
|
get
|
|
{
|
|
return lazy;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public void CompressImage(string sourceImagePath, string destinationPath, long quality)
|
|
{
|
|
using (Image image = Image.FromFile(sourceImagePath))
|
|
{
|
|
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
|
|
|
|
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
|
|
EncoderParameters myEncoderParameters = new EncoderParameters(1);
|
|
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
|
|
myEncoderParameters.Param[0] = myEncoderParameter;
|
|
|
|
image.Save(destinationPath, jpgEncoder, myEncoderParameters);
|
|
}
|
|
}
|
|
|
|
private ImageCodecInfo GetEncoder(ImageFormat format)
|
|
{
|
|
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
|
|
|
|
foreach (ImageCodecInfo codec in codecs)
|
|
{
|
|
if (codec.FormatID == format.Guid)
|
|
{
|
|
return codec;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|