国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#如何實現圖片的剪裁并保存

2019-10-29 21:19:26
字體:
來源:轉載
供稿:網友

最近需要將一張圖片上傳并按指定位置剪裁,后來在網上找了一個剪裁圖片的插件,但是只有前臺沒有后端,然后我各種百度,并最終完成,特此寫一篇博客略表紀念。

前臺我就不說了,用的cropper插件,有興趣的自己去百度找找吧。VEVB武林網 有這個插件。

下面是代碼:

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.Width, section.Height, section.X, section.Y);

上面代碼中用到我自己創建了一個ImgSize類,代碼如下:

class ImgSize{//{"x":30.003846153846148,"y":16.715384615384625,"height":300.8,"width":300.8,"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, 0, 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, 0, cropWidth, cropHeight), X, Y, cropWidth, 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, maxWidth, maxHeight);return bit;}}catch (System.Exception e){throw e;}finally{originalImage.Dispose();b.Dispose();}}

最后的結果是把存到了E盤根目錄下面

以上所述是小編給大家介紹的C#如何實現圖片的剪裁并保存,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡水市| 江西省| 信宜市| 卢龙县| 卢湾区| 舞钢市| 丰镇市| 佛坪县| 武山县| 孙吴县| 靖宇县| 锡林浩特市| 高密市| 昌图县| 云南省| 舞钢市| 长白| 宜州市| 黄浦区| 长海县| 张家港市| 高台县| 柳河县| 太原市| 邵阳县| 昌都县| 阿合奇县| 库尔勒市| 武义县| 阳原县| 沾化县| 罗定市| 吴堡县| 阿城市| 靖州| 鹰潭市| 南江县| 淮阳县| 开阳县| 高青县| 额济纳旗|