为什么做这个
网上的都要收费,只能自己做了
效果图
使用技术
.Net Mvc+layui前端框架
操作步骤
- 上传图片
- 修改清晰度值,值越高越清晰
- 点击压缩图片 即可压缩
- 下方展示原图片大小和压缩后的图片大小
- 右键图片 选择图片另存为。大功告成
后端代码
- 上传图片代码
public JsonResult UploadPicture()
{
string strFileName = "";
foreach (string upload in Request.Files.AllKeys)
{
Random rad = new Random();
int value = rad.Next(1000, 10000);
string path = Server.MapPath("\\upload\\");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + value + ".jpg";
HttpPostedFileBase file = Request.Files[upload] as HttpPostedFileBase;
//HttpPostedFile file = Request.Files[upload];
file.SaveAs(path.Replace('\\', '/') + strFileName);
}
var getFileUrl = "upload\\" + strFileName;
FileInfo fileInfo = GetFileInfo(getFileUrl);
return Json(new
{
Code = 200,
msg = "",
data = new
{
src = "/upload/" + strFileName
},
fileInfo = fileInfo
}, JsonRequestBehavior.AllowGet);
}
#endregion
- 图片压缩代码
参考的官方代码:https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.imaging.encoderparameter?view=netframework-4.6
public JsonResult VaryQualityLevel(string targetImagUrl, int qulitySize)
{
//获取程序的基目录。
string basePath = System.AppDomain.CurrentDomain.BaseDirectory;
string tagetUrl = basePath + targetImagUrl.TrimStart('/').Replace("/", "\\");
// Get a bitmap.
Bitmap bmp1 = new Bitmap(tagetUrl);
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
// 基于GUID创建一个编码器对象 为质量参数类别。
//建立一个Endoder对象
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
// 创建EncoderParameters对象。
//一个EncoderParameters对象有一个EncoderParameter数组
EncoderParameters myEncoderParameters = new EncoderParameters(1);
//这里的50L用来设置保存时的图片质量 0-100随便设置
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, qulitySize);
myEncoderParameters.Param[0] = myEncoderParameter;
Random rad = new Random();//实例化随机数产生器rad;
int value = rad.Next(1000, 10000);//用rad生成大于等于1000,小于等于9999的随机数;
var filename = DateTime.Now.ToString("yyyyMMddHHmmss") + value + ".jpg";
var smallImageUrl = $@"{basePath}upload\{filename}";
bmp1.Save(smallImageUrl, jpgEncoder, myEncoderParameters);//保存压缩后的图片
var getFileUrl = "upload\\" + filename;
FileInfo fileInfo = GetFileInfo(getFileUrl);
return Json(new
{
url = $"upload/{filename}",
fileInfo = fileInfo
}, JsonRequestBehavior.AllowGet);
}
- 获取文件大小等 信息
#region 获取文件信息
/// <summary>
/// 获取文件信息
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public FileInfo GetFileInfo(string url)
{
//获取程序的基目录。
string basePath = System.AppDomain.CurrentDomain.BaseDirectory;
var path = basePath + url;
var fileInfo = new System.IO.FileInfo(path);
System.Diagnostics.FileVersionInfo info = System.Diagnostics.FileVersionInfo.GetVersionInfo(path);
FileInfo fileInfoReturn = new FileInfo();
fileInfoReturn.FileName = info.FileName;
fileInfoReturn.ProductName = info.ProductName;
fileInfoReturn.CompanyName = info.CompanyName;
fileInfoReturn.FileVersion = info.FileVersion;
fileInfoReturn.ProductVersion = info.ProductVersion;
fileInfoReturn.ProductMajorPart = info.ProductMajorPart + "." + info.ProductMinorPart + '.' + info.ProductBuildPart + '.' + info.ProductPrivatePart;
fileInfoReturn.FileDescription = info.FileDescription;
fileInfoReturn.Language = info.Language;
fileInfoReturn.OriginalFilename = info.OriginalFilename;
fileInfoReturn.LegalCopyright = info.LegalCopyright;
fileInfoReturn.Size = System.Math.Ceiling(fileInfo.Length / 1024.0) + " KB";
return fileInfoReturn;
}
#endregion
/// <summary>
/// 文件信息model类
/// </summary>
public class FileInfo
{
/// <summary>
/// 文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 公司名称
/// </summary>
public string CompanyName { get; set; }
/// <summary>
/// 文件版本
/// </summary>
public string FileVersion { get; set; }
/// <summary>
/// 产品版本
/// </summary>
public string ProductVersion { get; set; }
/// <summary>
/// 系统显示文件版本「主版本号.次版本号.生成号.专用部件号」
/// </summary>
public string ProductMajorPart { get; set; }
/// <summary>
/// 文件说明
/// </summary>
public string FileDescription { get; set; }
/// <summary>
/// 文件语言
/// </summary>
public string Language { get; set; }
/// <summary>
/// 原始文件名称
/// </summary>
public string OriginalFilename { get; set; }
/// <summary>
/// 文件版权
/// </summary>
public string LegalCopyright { get; set; }
/// <summary>
/// 文件大小
/// </summary>
public string Size { get; set; }
}