85 lines
3.1 KiB
C#
85 lines
3.1 KiB
C#
using SixLabors.ImageSharp;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Drawing;
|
||
using System.Drawing.Imaging;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace PictureFilesApi.Common
|
||
{
|
||
public class ImageHelper
|
||
{
|
||
private static ImageCodecInfo GetEncoderInfo(String mimeType)
|
||
{
|
||
int j;
|
||
ImageCodecInfo[] encoders;
|
||
encoders = ImageCodecInfo.GetImageEncoders();
|
||
for (j = 0; j < encoders.Length; ++j)
|
||
{
|
||
if (encoders[j].MimeType == mimeType)
|
||
return encoders[j];
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图片压缩(降低质量以减小文件的大小)
|
||
/// </summary>
|
||
/// <param name="srcBitmap">传入的Bitmap对象</param>
|
||
/// <param name="destStream">压缩后的Stream对象</param>
|
||
/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
|
||
public static void Compress(Bitmap srcBitmap, Stream destStream, long level)
|
||
{
|
||
ImageCodecInfo myImageCodecInfo;
|
||
Encoder myEncoder;
|
||
EncoderParameter myEncoderParameter;
|
||
EncoderParameters myEncoderParameters;
|
||
|
||
// Get an ImageCodecInfo object that represents the JPEG codec.
|
||
myImageCodecInfo = GetEncoderInfo("image/jpeg");
|
||
|
||
// Create an Encoder object based on the GUID
|
||
|
||
// for the Quality parameter category.
|
||
myEncoder = Encoder.Quality;
|
||
|
||
// Create an EncoderParameters object.
|
||
// An EncoderParameters object has an array of EncoderParameter
|
||
// objects. In this case, there is only one
|
||
|
||
// EncoderParameter object in the array.
|
||
myEncoderParameters = new EncoderParameters(1);
|
||
|
||
// Save the bitmap as a JPEG file with 给定的 quality level
|
||
myEncoderParameter = new EncoderParameter(myEncoder, level);
|
||
myEncoderParameters.Param[0] = myEncoderParameter;
|
||
srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 图片压缩(降低质量以减小文件的大小)
|
||
/// </summary>
|
||
/// <param name="srcBitMap">传入的Bitmap对象</param>
|
||
/// <param name="destFile">压缩后的图片保存路径</param>
|
||
/// <param name="level">压缩等级,0到100,0 最差质量,100 最佳</param>
|
||
public static void Compress(Bitmap srcBitMap, string destFile, long level)
|
||
{
|
||
Stream s = new FileStream(destFile, FileMode.Create);
|
||
Compress(srcBitMap, s, level);
|
||
s.Close();
|
||
}
|
||
|
||
public static double ConvertDMSToDecimal(Rational[] values)
|
||
{
|
||
double degrees = (double)values[0].Numerator / (double)values[0].Denominator;
|
||
double minutes = (double)values[1].Numerator / ((double)values[1].Denominator * 60);
|
||
double seconds = (double)values[2].Numerator / ((double)values[2].Denominator * 3600);
|
||
|
||
double result = degrees + minutes + seconds;
|
||
return result;
|
||
}
|
||
}
|
||
}
|