C#如何实现图片的剪裁并保存

C#如何实现图片的剪裁并保存,第1张

概述最近需要将一张图片上传并按指定位置剪裁,后来在网上找了一个剪裁图片的插件,但是只有前台没有后端,然后我各种百度,并最终完成,特此写一篇博客略表纪念。

最近需要将一张图片上传并按指定位置剪裁,后来在网上找了一个剪裁图片的插件,但是只有前台没有后端,然后我各种百度,并最终完成,特此写一篇博客略表纪念。

前台我就不说了,用的cropper插件,有兴趣的自己去百度找找吧。编程小技巧 有这个插件。

下面是代码:

httpPostedfile file = context.Request.files["avatar_file"];string datasize = context.Request.Params["avatar_data"];//{"x":30.003846153846148,"y":16.715384615384625,"height":300.8,"wIDth":300.8,"rotate":0} 剪裁之后参数JavaScriptSerializer Jss = new JavaScriptSerializer();imgSize imagesize = Jss.Deserialize<imgSize>(datasize);byte[] fileByte = SetfileToByteArray(file);//图片数组string strtExtension = System.IO.Path.GetExtension(file.filename);//图片格式MemoryStream ms1 = new MemoryStream(fileByte);Bitmap sBitmap = (Bitmap)Image.FromStream(ms1);Rectangle section = new Rectangle(new Point(imagesize.ToInt(imagesize.x),imagesize.ToInt(imagesize.y)),new Size(imagesize.ToInt(imagesize.wIDth),imagesize.ToInt(imagesize.height)));Bitmap CroppedImage = MakethumbnailImage(sBitmap,section.WIDth,section.Height,section.X,section.Y);

上面代码中用到我自己创建了一个imgSize类,代码如下:

class imgSize{//{"x":30.003846153846148,"rotate":0}public double x { get; set; }public double y { get; set; }public double wIDth { get; set; }public double height { get; set; }public int rotate { get; set; }public int ToInt(double doubleValue){return Convert.ToInt32(doubleValue);}}

上面代码中使用到的几个方法:

文件转化:

/// <summary>/// 将From表单file文件转化为byte数组/// </summary>/// <param name="file">from提交文件流</param>/// <returns></returns>private byte[] SetfileToByteArray(httpPostedfile file){Stream stream = file.inputStream;byte[] AyyayByte = new byte[file.ContentLength];stream.Read(AyyayByte,file.ContentLength);stream.Close();return AyyayByte;}

核心剪裁方法:

/// <summary>/// 裁剪图片并保存/// </summary>/// <param name="Image">图片信息</param>/// <param name="maxWIDth">缩略图宽度</param>/// <param name="maxHeight">缩略图高度</param>/// <param name="cropWIDth">裁剪宽度</param>/// <param name="cropHeight">裁剪高度</param>/// <param name="X">X轴</param>/// <param name="Y">Y轴</param>public static Bitmap MakethumbnailImage(Image originalimage,int maxWIDth,int maxHeight,int cropWIDth,int cropHeight,int X,int Y){Bitmap b = new Bitmap(cropWIDth,cropHeight);try{using (Graphics g = Graphics.FromImage(b)){//清空画布并以透明背景色填充g.Clear(color.transparent);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalimage,new Rectangle(0,cropWIDth,cropHeight),X,Y,cropHeight,GraphicsUnit.Pixel);Image displayImage = new Bitmap(b,maxWIDth,maxHeight);displayImage.Save("E:\cutimg.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);Bitmap bit = new Bitmap(b,maxHeight);return bit;}}catch (System.Exception e){throw e;}finally{originalimage.dispose();b.dispose();}}

最后的结果是把存到了E盘根目录下面

以上所述是小编给大家介绍的C#如何实现图片的剪裁并保存,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的C#如何实现图片的剪裁并保存全部内容,希望文章能够帮你解决C#如何实现图片的剪裁并保存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1257007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存