{"id":10304,"date":"2024-01-18T18:18:00","date_gmt":"2024-01-18T18:18:00","guid":{"rendered":"https:\/\/codehim.com\/?p=10304"},"modified":"2024-01-22T16:19:12","modified_gmt":"2024-01-22T11:19:12","slug":"crop-image-in-canvas-using-javascript","status":"publish","type":"post","link":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/","title":{"rendered":"Crop Image in Canvas Using JavaScript"},"content":{"rendered":"<p>This JavaScript code helps crop images within a canvas. It allows defining and positioning cropped areas, enabling image selection. The main method, &#8220;drawImage,&#8221; facilitates displaying specific image portions, useful for customized image previews or selections.<\/p>\n<p>You can use this code on websites to let users <a href=\"https:\/\/codehim.com\/vanilla-javascript\/javascript-crop-image-and-save\/\" target=\"_blank\" rel=\"noopener\">crop images interactively<\/a>. It&#8217;s handy for profile picture uploads, enabling users to select and preview the desired image section before finalizing their choice. This feature can enhance user experience by providing customization options while ensuring the selected image fits perfectly.<\/p>\n<h2>How to Create Crop Image In Canvas Using Javascript<\/h2>\n<p>1. Begin by structuring the HTML file. Create a canvas for displaying the original image and another canvas for the cropped image. Include a container for these elements and a placeholder for instructions or descriptions.<\/p>\n<pre class=\"prettyprint linenums lang-html\">&lt;h1&gt;Cropping an image using HTML5 Canvas&lt;\/h1&gt;\r\n&lt;div class=\"wrapper\"&gt;\r\n  \r\n  &lt;canvas id='c1'&gt;&lt;\/canvas&gt;&lt;!--\r\n--&gt;&lt;canvas id='c2'&gt;&lt;\/canvas&gt;\r\n  &lt;p id=\"output\"&gt;&lt;\/p&gt;\r\n  &lt;p&gt;Move the cropping bars to enclose the desired area of interest (left canvas).&lt;br&gt;Then you may drag to reposition the cropped image (right canvas).&lt;\/p&gt;\r\n&lt;\/div&gt;<\/pre>\n<p>2. Style your elements using CSS to define the layout, canvas dimensions, and appearance of the cropping bars.<\/p>\n<pre class=\"prettyprint linenums lang-css\">body {\r\n  margin: 0;\r\n  padding: 0;\r\n  background: #eee;\r\n  font-family: Courier, monospace;\r\n  font-size: 16px;\r\n  text-align: center;\r\n  -webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.wrapper {\r\n  display: block;\r\n  margin: 0 auto;\r\n  padding: 0;\r\n  width: 844px;\r\n}\r\n\r\ncanvas {\r\n  margin: 10px;\r\n  padding: 0;\r\n  border: 1px solid #333;\r\n  display: inline-block;\r\n}\r\n\r\np {\r\n  text-align: left;\r\n  margin-left: 10px;\r\n}\r\n\r\nh1 {\r\n  font-size: 1.5em;\r\n  font-family: Arial, Helvetica, sans-serif;\r\n  padding: 1em 0 0;\r\n}\r\n\r\n\r\n\/*#c1 {\r\n  background-image: url(https:\/\/s3-us-west-2.amazonaws.com\/s.cdpn.io\/222579\/beagle400.jpg)\r\n}*\/<\/pre>\n<p>3. Finally, add the following JavaScript function into your project. It handles the cropping functionality and user interactions. Replace the <code>theImage<\/code> variable in the JavaScript code with the URL of the image you want to use. Modify the variables (<code>sx<\/code>, <code>sy<\/code>, <code>sw<\/code>, <code>sh<\/code>) to specify the desired cropped area.<\/p>\n<pre class=\"prettyprint linenums lang-js\">var proportion = .8; \/\/ you may change the proportion for the cropped image.\r\nvar theImage = \"https:\/\/s3-us-west-2.amazonaws.com\/s.cdpn.io\/222579\/beagle400.jpg\";\r\n\/*\r\noriginal image:\r\n----------------------------\r\n|     |                    |\r\n|     |sy                  |\r\n|_____|____________        |\r\n| sx  |           |        |\r\n|     |           |        |\r\n|     |           | sh     |\r\n|     |           |        |\r\n|     |___________|        |\r\n|          sw              |\r\n|                          |\r\n|                          |\r\n|__________________________|\r\n\r\ncropped image:\r\n----------------------------\r\n|     |                    |\r\n|     |y                   |\r\n|_____|_________           |\r\n|  x  |        |           |\r\n|     |        | h         |\r\n|     |________|           |\r\n|          w               |\r\n|                          |\r\n|                          |\r\n|__________________________|\r\n\r\nctx.drawImage(img,sx,sy,sw,sh,x,y,w,h)\r\n\r\n*\/\r\n\r\n\r\nvar output = document.getElementById(\"output\");\r\nvar c1 = document.getElementById(\"c1\");\r\nvar ctx1 = c1.getContext(\"2d\");\r\nvar c2 = document.getElementById(\"c2\");\r\nvar ctx2 = c2.getContext(\"2d\");\r\n\r\nvar cw = c1.width = c2.width = 400,\r\n  cx = cw \/ 2;\r\nvar ch = c1.height = c2.height = 400,\r\n  cy = ch \/ 2;\r\n\r\nvar isDragging1 = false;\r\nvar isDragging2 = false;\r\n\r\nvar sy = 20;\r\nvar sx = 130;\r\nvar sw = 200;\r\nvar sh = 200;\r\n\r\nvar r = 4;\r\n\r\nvar mousePos1 = {\r\n  x: 0,\r\n  y: 0\r\n};\r\nvar mousePos2 = {\r\n  x: 0,\r\n  y: 0\r\n};\r\n\r\nvar o = { \/\/ cropping bars\r\n  \"sx\": {\r\n    color: \"white\",\r\n    x: 0,\r\n    y: sy,\r\n    w: cw,\r\n    h: r,\r\n    bool: false,\r\n  },\r\n  \"sy\": {\r\n    color: \"yellow\",\r\n    x: sx,\r\n    y: 0,\r\n    w: r,\r\n    h: ch,\r\n    bool: false,\r\n  },\r\n  \"sw\": {\r\n    color: \"orange\",\r\n    x: 0,\r\n    y: sy + sh,\r\n    w: cw,\r\n    h: r,\r\n    bool: false,\r\n  },\r\n  \"sh\": {\r\n    color: \"red\",\r\n    x: sx + sw,\r\n    y: 0,\r\n    w: r,\r\n    h: ch,\r\n    bool: false,\r\n  }\r\n}\r\n\r\nfunction drawGuides(o) {\r\n  for (k in o) {\r\n    ctx1.fillStyle = o[k].color;\r\n    ctx1.beginPath();\r\n    ctx1.fillRect(o[k].x, o[k].y, o[k].w, o[k].h);\r\n  }\r\n}\r\n\r\nfunction Imgo(o, d) { \/\/ an object defining the cropped image\r\n  var imgo = {\r\n    sx: o.sy.x,\r\n    sy: o.sx.y,\r\n    sw: o.sh.x - o.sy.x,\r\n    sh: o.sw.y - o.sx.y,\r\n    w: ~~((o.sh.x - o.sy.x) * proportion),\r\n    h: ~~((o.sw.y - o.sx.y) * proportion),\r\n    x: d.x,\r\n    y: d.y\r\n  }\r\n  return imgo;\r\n}\r\n\r\nvar d = {\r\n  x: ~~(cx - sw * proportion \/ 2),\r\n  y: ~~(cy - sh * proportion \/ 2)\r\n}\r\n\r\nfunction Output(Imgo, output) {\r\n  output.innerHTML = \"ctx.drawImage(img,\" + imgo.sx + \",\" + imgo.sy + \",\" + imgo.sw + \",\" + imgo.sh + \",\" + imgo.x + \",\" + imgo.y + \",\" + imgo.w + \",\" + imgo.h + \")\";\r\n}\r\n\r\nfunction drawCroppedImage(imgo) {\r\n  ctx2.drawImage(img, imgo.sx, imgo.sy, imgo.sw, imgo.sh, imgo.x, imgo.y, imgo.w, imgo.h);\r\n}\r\n\r\nfunction outlineImage(imgo) {\r\n  ctx2.beginPath();\r\n  ctx2.rect(imgo.x, imgo.y, imgo.w, imgo.h);\r\n}\r\n\r\nfunction cursorStyleC1() {\r\n  c1.style.cursor = \"default\";\r\n  for (k in o) { \/\/o[k].bool = false;\r\n    ctx1.beginPath();\r\n    ctx1.rect(o[k].x - 10, o[k].y - 10, o[k].w + 20, o[k].h + 20);\r\n    if (ctx1.isPointInPath(mousePos1.x, mousePos1.y)) {\r\n      if (k == \"sx\" || k == \"sw\") {\r\n        c1.style.cursor = \"row-resize\";\r\n      } else {\r\n        c1.style.cursor = \"col-resize\";\r\n      }\r\n      break;\r\n    } else {\r\n      c1.style.cursor = \"default\";\r\n    }\r\n  }\r\n}\r\n\r\nfunction cursorStyleC2() {\r\n  c2.style.cursor = \"default\";\r\n  outlineImage(imgo);\r\n  if (ctx2.isPointInPath(mousePos2.x, mousePos2.y)) {\r\n    c2.style.cursor = \"move\";\r\n  } else {\r\n    c2.style.cursor = \"default\";\r\n  }\r\n}\r\n\r\ndrawGuides(o);\r\nvar imgo = Imgo(o, d); \/\/ an object defining the cropped image\r\nOutput(Imgo, output); \/\/ text: \"drawImage(img,130,10,200,220,150,145,100,110)\";\r\n\r\nvar img = new Image();\r\nimg.src = theImage;\r\nimg.onload = function() {\r\n  c1.style.backgroundImage = \"url(\"+theImage+\")\";\r\n  drawCroppedImage(imgo);\r\n}\r\n\r\n\/\/ mousedown ***************************\r\n\r\nc1.addEventListener('mousedown', function(evt) {\r\n  isDragging1 = true;\r\n\r\n  mousePos1 = oMousePos(c1, evt);\r\n  for (k in o) {\r\n    ctx1.beginPath();\r\n    ctx1.rect(o[k].x - 10, o[k].y - 10, o[k].w + 20, o[k].h + 20);\r\n    if (ctx1.isPointInPath(mousePos1.x, mousePos1.y)) {\r\n      o[k].bool = true;\r\n      if (k == \"sx\" || k == \"sw\") {\r\n        o[k].y = mousePos1.y;\r\n      } else {\r\n        o[k].x = mousePos1.x;\r\n      }\r\n      break;\r\n    } else {\r\n      o[k].bool = false;\r\n    }\r\n  }\r\n\r\n  Output(Imgo, output);\r\n\r\n}, false);\r\n\r\nc2.addEventListener('mousedown', function(evt) {\r\n  mousePos2 = oMousePos(c2, evt);\r\n  outlineImage(imgo)\r\n  if (ctx2.isPointInPath(mousePos2.x, mousePos2.y)) {\r\n    isDragging2 = true;\r\n\r\n    deltaX = mousePos2.x - imgo.x;\r\n    deltaY = mousePos2.y - imgo.y;\r\n\r\n    Output(Imgo, output);\r\n  }\r\n}, false);\r\n\r\n\/\/ mousemove ***************************\r\nc1.addEventListener('mousemove', function(evt) {\r\n  mousePos1 = oMousePos(c1, evt); \/\/console.log(mousePos)\t\r\n  cursorStyleC1();\r\n\r\n  if (isDragging1 == true) {\r\n    ctx1.clearRect(0, 0, cw, ch);\r\n\r\n    for (k in o) {\r\n      if (o[k].bool) {\r\n        if (k == \"sx\" || k == \"sw\") {\r\n          o[k].y = mousePos1.y;\r\n        } else {\r\n          o[k].x = mousePos1.x;\r\n        }\r\n        break;\r\n      }\r\n    }\r\n\r\n    drawGuides(o);\r\n    ctx2.clearRect(0, 0, cw, ch);\r\n    imgo = Imgo(o, d);\r\n    drawCroppedImage(imgo);\r\n    Output(Imgo, output);\r\n  }\r\n}, false);\r\n\r\nc2.addEventListener('mousemove', function(evt) {\r\n  mousePos2 = oMousePos(c2, evt);\r\n\r\n  if (isDragging2 == true) {\r\n    ctx2.clearRect(0, 0, cw, ch);\r\n    d.x = mousePos2.x - deltaX;\r\n    d.y = mousePos2.y - deltaY;\r\n    imgo = Imgo(o, d);\r\n    drawCroppedImage(imgo);\r\n    Output(Imgo, output);\r\n  }\r\n  cursorStyleC2();\r\n}, false);\r\n\r\n\/\/ mouseup ***************************\r\nc1.addEventListener('mouseup', function(evt) {\r\n  isDragging1 = false;\r\n  for (k in o) {\r\n    o[k].bool = false;\r\n  }\r\n}, false);\r\n\r\nc2.addEventListener('mouseup', function(evt) {\r\n  isDragging2 = false;\r\n\r\n}, false);\r\n\r\n\/\/ mouseout ***************************\r\nc1.addEventListener('mouseout', function(evt) {\r\n  isDragging1 = false;\r\n  for (k in o) {\r\n    o[k].bool = false;\r\n  }\r\n}, false);\r\n\r\nc2.addEventListener('mouseout', function(evt) {\r\n  isDragging2 = false;\r\n\r\n}, false);\r\n\r\nfunction oMousePos(canvas, evt) {\r\n  var rect = canvas.getBoundingClientRect();\r\n  return {\r\n    x: Math.round(evt.clientX - rect.left),\r\n    y: Math.round(evt.clientY - rect.top)\r\n  }\r\n}<\/pre>\n<p>That&#8217;s all! hopefully, you have successfully created a functionality to crop image in canvas using JavaScript. If you have any questions or suggestions, feel free to comment below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This JavaScript code helps crop images within a canvas. It allows defining and positioning cropped areas, enabling image selection. The&#8230;<\/p>\n","protected":false},"author":1,"featured_media":10316,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[116],"tags":[218],"class_list":["post-10304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vanilla-javascript","tag-image-cropper"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Crop Image in Canvas Using JavaScript &#8212; CodeHim<\/title>\n<meta name=\"description\" content=\"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Crop Image in Canvas Using JavaScript &#8212; CodeHim\" \/>\n<meta property=\"og:description\" content=\"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"CodeHim\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/codehimofficial\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-18T18:18:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-22T11:19:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"980\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Asif Mughal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodeHimOfficial\" \/>\n<meta name=\"twitter:site\" content=\"@CodeHimOfficial\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Asif Mughal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\"},\"author\":{\"name\":\"Asif Mughal\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed\"},\"headline\":\"Crop Image in Canvas Using JavaScript\",\"datePublished\":\"2024-01-18T18:18:00+00:00\",\"dateModified\":\"2024-01-22T11:19:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\"},\"wordCount\":224,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/codehim.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png\",\"keywords\":[\"Image Cropper\"],\"articleSection\":[\"Vanilla JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\",\"url\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\",\"name\":\"Crop Image in Canvas Using JavaScript &#8212; CodeHim\",\"isPartOf\":{\"@id\":\"https:\/\/codehim.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png\",\"datePublished\":\"2024-01-18T18:18:00+00:00\",\"dateModified\":\"2024-01-22T11:19:12+00:00\",\"description\":\"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.\",\"breadcrumb\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage\",\"url\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png\",\"contentUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png\",\"width\":1280,\"height\":980,\"caption\":\"Crop Image in Canvas Using JavaScript\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/codehim.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vanilla JavaScript\",\"item\":\"https:\/\/codehim.com\/category\/vanilla-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Crop Image in Canvas Using JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/codehim.com\/#website\",\"url\":\"https:\/\/codehim.com\/\",\"name\":\"CodeHim\",\"description\":\"Web Design Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/codehim.com\/#organization\"},\"alternateName\":\"Web Design Codes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/codehim.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/codehim.com\/#organization\",\"name\":\"CodeHim - Web Design Code & Scripts\",\"url\":\"https:\/\/codehim.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg\",\"contentUrl\":\"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg\",\"width\":280,\"height\":280,\"caption\":\"CodeHim - Web Design Code & Scripts\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/codehimofficial\",\"https:\/\/x.com\/CodeHimOfficial\",\"https:\/\/www.instagram.com\/codehim\/\",\"https:\/\/www.linkedin.com\/company\/codehim\",\"https:\/\/co.pinterest.com\/codehim\/\",\"https:\/\/www.youtube.com\/@codehim\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed\",\"name\":\"Asif Mughal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g\",\"caption\":\"Asif Mughal\"},\"description\":\"I code and create web elements for amazing people around the world. I like work with new people. New people new Experiences. I truly enjoy what I'm doing, which makes me more passionate about web development and coding. I am always ready to do challenging tasks whether it is about creating a custom CMS from scratch or customizing an existing system.\",\"sameAs\":[\"https:\/\/codehim.com\"],\"url\":\"https:\/\/codehim.com\/author\/asif-mughal\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Crop Image in Canvas Using JavaScript &#8212; CodeHim","description":"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Crop Image in Canvas Using JavaScript &#8212; CodeHim","og_description":"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.","og_url":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/","og_site_name":"CodeHim","article_publisher":"https:\/\/www.facebook.com\/codehimofficial","article_published_time":"2024-01-18T18:18:00+00:00","article_modified_time":"2024-01-22T11:19:12+00:00","og_image":[{"width":1280,"height":980,"url":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png","type":"image\/png"}],"author":"Asif Mughal","twitter_card":"summary_large_image","twitter_creator":"@CodeHimOfficial","twitter_site":"@CodeHimOfficial","twitter_misc":{"Written by":"Asif Mughal","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#article","isPartOf":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/"},"author":{"name":"Asif Mughal","@id":"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed"},"headline":"Crop Image in Canvas Using JavaScript","datePublished":"2024-01-18T18:18:00+00:00","dateModified":"2024-01-22T11:19:12+00:00","mainEntityOfPage":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/"},"wordCount":224,"commentCount":0,"publisher":{"@id":"https:\/\/codehim.com\/#organization"},"image":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png","keywords":["Image Cropper"],"articleSection":["Vanilla JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/","url":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/","name":"Crop Image in Canvas Using JavaScript &#8212; CodeHim","isPartOf":{"@id":"https:\/\/codehim.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage"},"image":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png","datePublished":"2024-01-18T18:18:00+00:00","dateModified":"2024-01-22T11:19:12+00:00","description":"Here is a free code snippet to create a Crop Image in Canvas Using JavaScript. You can view demo and download the source code.","breadcrumb":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#primaryimage","url":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png","contentUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/12\/Crop-Image-in-Canvas-Using-JavaScript.png","width":1280,"height":980,"caption":"Crop Image in Canvas Using JavaScript"},{"@type":"BreadcrumbList","@id":"https:\/\/codehim.com\/vanilla-javascript\/crop-image-in-canvas-using-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codehim.com\/"},{"@type":"ListItem","position":2,"name":"Vanilla JavaScript","item":"https:\/\/codehim.com\/category\/vanilla-javascript\/"},{"@type":"ListItem","position":3,"name":"Crop Image in Canvas Using JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/codehim.com\/#website","url":"https:\/\/codehim.com\/","name":"CodeHim","description":"Web Design Code Snippets","publisher":{"@id":"https:\/\/codehim.com\/#organization"},"alternateName":"Web Design Codes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codehim.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codehim.com\/#organization","name":"CodeHim - Web Design Code & Scripts","url":"https:\/\/codehim.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/#\/schema\/logo\/image\/","url":"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg","contentUrl":"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg","width":280,"height":280,"caption":"CodeHim - Web Design Code & Scripts"},"image":{"@id":"https:\/\/codehim.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/codehimofficial","https:\/\/x.com\/CodeHimOfficial","https:\/\/www.instagram.com\/codehim\/","https:\/\/www.linkedin.com\/company\/codehim","https:\/\/co.pinterest.com\/codehim\/","https:\/\/www.youtube.com\/@codehim"]},{"@type":"Person","@id":"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed","name":"Asif Mughal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g","caption":"Asif Mughal"},"description":"I code and create web elements for amazing people around the world. I like work with new people. New people new Experiences. I truly enjoy what I'm doing, which makes me more passionate about web development and coding. I am always ready to do challenging tasks whether it is about creating a custom CMS from scratch or customizing an existing system.","sameAs":["https:\/\/codehim.com"],"url":"https:\/\/codehim.com\/author\/asif-mughal\/"}]}},"views":1057,"_links":{"self":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts\/10304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/comments?post=10304"}],"version-history":[{"count":0,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts\/10304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/media\/10316"}],"wp:attachment":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/media?parent=10304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/categories?post=10304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/tags?post=10304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}