Introduction
In this post I am explain How to crop image and save the cropped image using asp.net & jqueryHere I explain how to crop image and save the cropped image using asp.net & jquery. In this example I have used JCrop. JCrop is the quick and easy way to add image cropping functionality to our web application. Using JCrop I get selected Area of uploaded image and using C#.NET code I have saved croped image.
Steps :
Step - 1 : Create New Project.
Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.Step-2: Add a Webpage and Design for Crop & Save.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select web form/ web form using master page under Web > Enter page name > Add.HTML Code
<h3>Image Upload, Crop & Save using ASP.NET & Jquery</h3> <%-- HTML Code --%> <table> <tr> <td> Select Image File : </td> <td> <asp:FileUpload ID="FU1" runat="server" /> </td> <td> <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" /> </td> </tr> <tr> <td colspan="3"> <asp:Label ID="lblMsg" runat="server" ForeColor="Red" /> </td> </tr> </table> <asp:Panel ID="panCrop" runat="server" Visible="false"> <table> <tr> <td> <asp:Image ID="imgUpload" runat="server" /> </td> </tr> <tr> <td> <asp:Button ID="btnCrop" runat="server" Text="Crop & Save" OnClick="btnCrop_Click" /> </td> </tr> <tr> <td> <%-- Hidden field for store cror area --%> <asp:HiddenField ID="X" runat="server" /> <asp:HiddenField ID="Y" runat="server" /> <asp:HiddenField ID="W" runat="server" /> <asp:HiddenField ID="H" runat="server" /> </td> </tr> </table> </asp:Panel>
Step-3: Write following JS code in your page Head section.
<%-- Now I Will add some js & css file Here. This is required for select crop area --%> <%-- you can download this Jcrop.css & jquery.Jcrop.js file from Here : https://github.com/tapmodo/Jcrop --%> <link href="Scripts/jquery.Jcrop.css" rel="stylesheet" /> <script src="Scripts/jquery-1.7.1.min.js"></script> <script src="Scripts/jquery.Jcrop.js"></script> <script language="javascript"> $(document).ready(function () { $('#<%=imgUpload.ClientID%>').Jcrop({ onSelect: SelectCropArea }); }); function SelectCropArea(c) { $('#<%=X.ClientID%>').val(parseInt(c.x)); $('#<%=Y.ClientID%>').val(parseInt(c.y)); $('#<%=W.ClientID%>').val(parseInt(c.w)); $('#<%=H.ClientID%>').val(parseInt(c.h)); } </script>
Step-4: Add A folder for Save Uploaded Images.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New Folder > Remane Folder.Step-5: Write below code in btnUpload_Click event for upload image.
protected void btnUpload_Click(object sender, EventArgs e) { // Upload Original Image Here string uploadFileName = ""; string uploadFilePath = ""; if (FU1.HasFile) { string ext = Path.GetExtension(FU1.FileName).ToLower(); if (ext == ".jpg" || ext == ".jpeg" || ext == ".gif" || ext == ".png") { uploadFileName = Guid.NewGuid().ToString() + ext; uploadFilePath = Path.Combine(Server.MapPath("~/UploadImages"), uploadFileName); try { FU1.SaveAs(uploadFilePath); imgUpload.ImageUrl = "~/UploadImages/" + uploadFileName; panCrop.Visible = true; } catch (Exception ex) { lblMsg.Text = "Error! Please try again."; } } else { lblMsg.Text = "Selected file type not allowed!"; } } else { lblMsg.Text = "Please select file first!"; } }
Step-6: Write code in btnCrop_Click event for Crop & Save Cropped Image.
protected void btnCrop_Click(object sender, EventArgs e) { // Crop Image Here & Save string fileName = Path.GetFileName(imgUpload.ImageUrl); string filePath = Path.Combine(Server.MapPath("~/UploadImages"), fileName); string cropFileName = ""; string cropFilePath = ""; if (File.Exists(filePath)) { System.Drawing.Image orgImg = System.Drawing.Image.FromFile(filePath); Rectangle CropArea = new Rectangle( Convert.ToInt32(X.Value), Convert.ToInt32(Y.Value), Convert.ToInt32(W.Value), Convert.ToInt32(H.Value)); try { Bitmap bitMap = new Bitmap(CropArea.Width, CropArea.Height); using (Graphics g = Graphics.FromImage(bitMap)) { g.DrawImage(orgImg, new Rectangle(0, 0, bitMap.Width, bitMap.Height), CropArea, GraphicsUnit.Pixel); } cropFileName = "crop_" + fileName; cropFilePath = Path.Combine(Server.MapPath("~/UploadImages"), cropFileName); bitMap.Save(cropFilePath); Response.Redirect("~/UploadImages/" + cropFileName, false); } catch (Exception ex) { throw; } } }
Step-7: Run Application.
- How to Create Simple Image Gallery using repeater control & Jquery in ASP.NET
- How to add Watermark Image (Logo) to an image dynamically while uploading in ASP.NET.
- How to add Watermark Text to an image dynamically while uploading in ASP.NET.
- How to upload image and generate thumbnails dynamically from an original big image.