Recently we have released our new image tool daycaca.
A pure JS library to handle image via canvas
<Canvas> is a magic element which helps you to draw some amazing effects in a web page. And it enables a power to draw images on the canvas.
drawImage helps us draw an image on canvas. We can get each pixel data and change these data. toDataUrl method returns a data URI containing a representation of the image in the format specified by the type parameter. Those APIs leads to crop and compress image online.
How to use
Use Npm install the package.
$  npm install daycaca -save
// es6
import daycaca from 'daycaca';
// src specify an image src (url or base64)
daycaca.rotate(src, degress, (data, w, h) => {
  // your code here
});
And you could import the script in your html file. And daycaca attachs to the window object.
<script src="./dist/daycaca.min.js"></script>
<script>
  // src specify an image src (url or base64)
  daycaca.rotate(src, degress, (data, w, h) => {
    // your code here
  });
</script>
API
All API methods's argument source should be one type below:
- an image url (Pay attention to CORS settings)
 - an IMG element
 - a file object Which use 
input[type="file"]value as source 
base64(source, callback)
Convert your image to base64.
const img = document.querySelector('img')
daycaca.base64(img, (data) => {
  //... handle base64
})
compress(source, quailty, callback)
Compress your image and minify the size of your image.
- 
PNG need lossless compression; So the param
qualitymay not work. - 
JPG/JPEG/BMP need lossy compression;
 
quality (1~100). 100 means that the image keeps the same quality.
const img = document.querySelector('img')
daycaca.compress(img, 0.5,(data) => {
  //... handle base64
})
crop(source, option, callback)
Crop your image to the size which you specify.
option {} :
- toCropImgX: The x-axis distance between the crop area and the image;
 - toCropImgY: The y-axis distance between the crop area and the image;
 - toCropImgW: The width of crop area;
 - toCropImgH: The height of crop area
 - ratio: the scale ration of the image
 
const img = document.querySelector('img')
daycaca.reszie(img, {
  toCropImgX: 10,
  toCropImgY: 20,
  toCropImgW: 100,
  toCropImgH: 70
},(data) => {
  //... handle base64
})
rotate(source, degree, callback)
Rotate your image to any degree.
const img = document.querySelector('img')
daycaca.rotate(img, 90,(data) => {
  //... handle base64
})
reszie(source, ratio, callback)
Scale the image;
- ratio (0~1): the scale ratio of the image. 1 means the image keep the same size;
 
const img = document.querySelector('img')
daycaca.reszie(img, 0.5,(data) => {
  //... handle base64
})
Your contributions and suggestions are welcome 😄😄🌺🌺🎆🎆~