mirror of
https://github.com/Investigamer/cardconjurer.git
synced 2025-07-27 13:21:41 -05:00
53 lines
2.7 KiB
JavaScript
53 lines
2.7 KiB
JavaScript
//Create canvas for cropping the image
|
|
var cropCanvas = document.createElement("canvas")
|
|
var cropContext = cropCanvas.getContext("2d")
|
|
cropCanvas.onload = function() {
|
|
//document.body.appendChild(cropCanvas) //For testing purposes only
|
|
}
|
|
//Function that auto crops the image
|
|
function autocrop(url, destination) {
|
|
//Create image, size canvas, draw image
|
|
var imgTempSetSymbol = new Image()
|
|
imgTempSetSymbol.crossOrigin = "anonymous"
|
|
imgTempSetSymbol.src = url
|
|
imgTempSetSymbol.onload = function() {
|
|
if (imgTempSetSymbol.width > 0 && imgTempSetSymbol.height > 0) {
|
|
cropCanvas.width = imgTempSetSymbol.width
|
|
cropCanvas.height = imgTempSetSymbol.height
|
|
cropContext.drawImage(imgTempSetSymbol, 0, 0)
|
|
//declare variables
|
|
var width = cropCanvas.width
|
|
var height = cropCanvas.height
|
|
var pix = {x:[], y:[]}
|
|
var imageData = cropContext.getImageData(0,0,cropCanvas.width,cropCanvas.height)
|
|
var x, y, index
|
|
//Go through every pixel and
|
|
for (y = 0; y < height; y++) {
|
|
for (x = 0; x < width; x++) {
|
|
//(y * width + x) * 4 + 3 calculates the index at which the alpha value of the pixel at x, y is given
|
|
index = (y * width + x) * 4 + 3
|
|
if (imageData.data[index] > 0) {
|
|
//pix is the image object that stores two arrays of x and y coordinates. These stored coordinates are all the visible pixels
|
|
pix.x.push(x)
|
|
pix.y.push(y)
|
|
}
|
|
}
|
|
}
|
|
//sorts the arrays numerically
|
|
pix.x.sort(function(a,b){return a-b})
|
|
pix.y.sort(function(a,b){return a-b})
|
|
var n = pix.x.length - 1
|
|
//Finds the difference between the leftmost and rightmost visible pixels, and the topmost and bottommost pixels, cuts out a section of the canvas
|
|
width = pix.x[n] - pix.x[0]
|
|
height = pix.y[n] - pix.y[0]
|
|
var cropped = cropContext.getImageData(pix.x[0], pix.y[0], width + 1, height + 1)
|
|
//Resizes the canvas and draws cropped image
|
|
cropCanvas.width = width + 1
|
|
cropCanvas.height = height + 1
|
|
cropContext.putImageData(cropped, 0, 0)
|
|
//Saves the newly cropped image to the given image
|
|
destination.src = cropCanvas.toDataURL()
|
|
}
|
|
}
|
|
}
|