簡要說明jquery+jcrop實現的圖片裁剪儲存
程式碼更多的是思路,請各位看官勿噴~
#region 編輯頭像:儲存上傳頭像 Post["/common/SaveHeadImg"] = parameters => { if (Page.UserHasLogin) { try { //獲取頁面截圖引數,生成新的使用者頭像圖片 UserImgUpload userImgUpload = this.Bind<UserImgUpload>(); if (userImgUpload == null) { return JSONHelper.JsonResult(0, ""); } string xstr = userImgUpload.x1; string ystr = userImgUpload.y1; string wstr = userImgUpload.w; string hstr = userImgUpload.h; string FileUrl = userImgUpload.FileUrl; string updateType = userImgUpload.updateType; string fileLocationOnServer = HttpContext.Current.Server.MapPath(FileUrl); //根據原始圖片高寬和 870px 進行比例計算得到 Ratio string Ratio = "1"; System.Drawing.Image image = System.Drawing.Image.FromFile(fileLocationOnServer); if (image.Width > 870 && image.Width >= image.Height) { Ratio = (TranDataType.StrToFloat(870) / TranDataType.StrToFloat(image.Width)).ToString(); } else if (image.Height > 600 && image.Height >= image.Width) { Ratio = (TranDataType.StrToFloat(600) / TranDataType.StrToFloat(image.Height)).ToString(); } string savePath = "/HeadImage/" + sysWebUser.UserLoginName + "/" + sysWebUser.UserLoginName + "_original.jpg"; int x = TranDataType.ObjToInt(Math.Round(TranDataType.ObjToInt(xstr) / TranDataType.StrToDouble(Ratio))); int y = TranDataType.ObjToInt(Math.Round(TranDataType.ObjToInt(ystr) / TranDataType.StrToDouble(Ratio))); int w = TranDataType.ObjToInt(Math.Round(TranDataType.ObjToInt(wstr) / TranDataType.StrToDouble(Ratio))); int h = TranDataType.ObjToInt(Math.Round(TranDataType.ObjToInt(hstr) / TranDataType.StrToDouble(Ratio))); ImageCut ic = new ImageCut(x, y, w, h); System.Drawing.Bitmap bm = new Bitmap(fileLocationOnServer); System.Drawing.Bitmap cuted = ic.KiCut(bm); string cutPath = System.Web.HttpContext.Current.Server.MapPath(savePath); string wjjPath = System.Web.HttpContext.Current.Server.MapPath("/HeadImage/" + sysWebUser.UserLoginName + "/"); if (!Directory.Exists(wjjPath)) { Directory.CreateDirectory(wjjPath); } //刪除現有的頭像檔案 //儲存原始截圖檔案 Original Picture cuted.Save(cutPath, System.Drawing.Imaging.ImageFormat.Jpeg); //生成 150*150 頭像 string userimg150 = "/HeadImage/" + sysWebUser.UserLoginName + "/" + sysWebUser.UserLoginName + "_150_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg"; System.Drawing.Image originalImage = System.Drawing.Image.FromFile(cutPath); var thumb = originalImage.GetThumbnailImage(150, 150, () => false, IntPtr.Zero); thumb.Save(System.Web.HttpContext.Current.Server.MapPath(userimg150)); //生成 70*70 頭像 string userimg70 = "/HeadImage/" + sysWebUser.UserLoginName + "/" + sysWebUser.UserLoginName + "_70_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg"; System.Drawing.Image originalImage2 = System.Drawing.Image.FromFile(cutPath); var thumb2 = originalImage2.GetThumbnailImage(70, 70, () => false, IntPtr.Zero); thumb2.Save(System.Web.HttpContext.Current.Server.MapPath(userimg70)); //必須釋放所有程式資源,否則無法刪除原始圖片 originalImage.Dispose(); originalImage2.Dispose(); cuted.Dispose(); bm.Dispose(); image.Dispose(); //刪除原始上傳圖片 File.Delete(fileLocationOnServer); File.Delete(cutPath); //刪除臨時上傳資料夾 //FileHelper.DeleteDir(HttpContext.Current.Server.MapPath("../HeadImageTemp/" + sysWebUser.UserLoginName)); //修改個人資訊 return Response.AsRedirect("/PersonalHeadImage"); } catch (Exception ex) { MessageHelper.WriteOperateExceptionLog("/common/SaveHeadImg", "SaveHeadImg", ex.Message + " | " + ex.StackTrace, "", ""); return JSONHelper.JsonResult(0, ""); } } else { return Response.AsRedirect("/"); } return null; }; #endregion
由龐順龍最後編輯於:4年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- 基於React Hook實現圖片的裁剪ReactHook
- iOS實現點選圖片放大&長按儲存圖片iOS
- android圖片裁剪拼接實現(二):觸控實現Android
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- 小程式–儲存圖片到相簿功能實現
- 儲存圖片
- 怎麼裁剪圖片?PerfectlyClear Complete裁剪圖片的方法
- .NetCore實現圖片縮放與裁剪 - 基於ImageSharpNetCore
- 滑鼠懸浮圖片出現文字說明效果
- 移動端如何實現長按儲存圖片(圖片上的二維碼是動態的)?
- Python批次裁剪圖片Python
- 裁剪上傳圖片
- CSS圖片上面新增文字說明CSS
- 儲存圖片到SD卡SD卡
- asp.net儲存圖片ASP.NET
- Acrobat怎麼批次儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- Acrobat怎麼批量儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- WebView實現長按儲存圖片 長按識別二維碼WebView
- js實現canvas儲存圖片為png格式並下載到本地JSCanvas
- 使用Python實現網頁中圖片的批次下載和水印新增儲存Python網頁
- 短視訊直播系統,動態內的圖片實現長按儲存
- Go實現簡單的K-V儲存Go
- 實現簡單的輪播圖(單張圖片、多張圖片)
- octobercms 圖片裁剪外掛
- Java 圖片裁剪,擷取Java
- ps裁剪工具怎麼自由裁剪 ps如何裁剪自己想要的圖片尺寸
- 圖的儲存與遍歷C++實現C++
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- 使用 HTML5 Canvas 實現使用者自定義裁剪圖片HTMLCanvas
- C# 截圖並儲存為圖片C#
- 教你如何儲存抖音店鋪的商品圖片,自動儲存主圖、詳情圖
- 【轉】mysql儲存圖片技術決定:儲存二進位制檔案還是隻儲存圖片相對路徑,圖片放在硬碟上面?MySql硬碟
- 深入解析微信小程式頁面中實現的儲存圖片(附程式碼)微信小程式
- 移動端長按儲存、取消長按儲存圖片
- 深度剖析Redis6的持久化機制(大量圖片說明,簡潔易懂)Redis持久化
- (H5)canvas實現裁剪圖片和馬賽克功能,以及又拍雲上傳圖片H5Canvas
- 圖片管理ImageRanger入門級使用說明Ranger
- Vue圖片裁剪上傳元件Vue元件