index.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. let lastFile = null;
  2. let sourceImage;
  3. let options = {
  4. quality: 0.92,
  5. noCompressIfLarger: true
  6. // maxWidth: 1000,
  7. // maxHeight: 618
  8. }
  9. $("#select").change(function(){
  10. options.outputType = this.files[0].type;
  11. sourceImage = new Image();
  12. let sourceUrl = URL.createObjectURL(this.files[0]);
  13. sourceImage.src = sourceUrl;
  14. sourceImage.onload = () => {
  15. compress(this.files[0]);
  16. }
  17. })
  18. $('input[type="range"]').each(function() {
  19. let name = $(this).attr("name");
  20. $(this).val(options[name])
  21. $(this).next().text(options[name])
  22. $(this).on("change", function(){
  23. options = Object.assign(options, {[name]: +$(this).val()});
  24. $(this).next().text(options[name])
  25. compress();
  26. })
  27. })
  28. function compress(file){
  29. file = file || lastFile;
  30. lastFile = file;
  31. URL.revokeObjectURL($(".distImage img").attr("src"));
  32. URL.revokeObjectURL($(".sourceImage img").attr("src"));
  33. $(".distImage img").attr("src", "");
  34. $(".sourceImage img").attr("src", "");
  35. $(".distImage pre").text("");
  36. $(".sourceImage pre").text("");
  37. qiniu.compressImage(file, options).then(data => {
  38. $(".distImage img").attr("src", URL.createObjectURL(data.dist))
  39. $(".sourceImage img").attr("src", URL.createObjectURL(file));
  40. $(".distImage pre").text("File size:" + (data.dist.size / 1024).toFixed(2) + "KB" + "\n" + "File type:" + data.dist.type + "\n" + "Dimensions:" + data.width + "*" + data.height + "\n" + "ratio:" + (data.dist.size / file.size).toFixed(2) * 100 + "%")
  41. $(".sourceImage pre").text("File size:" + (file.size / 1024).toFixed(2) + "KB" + "\n" + "File type:" + file.type + "\n" + "Dimensions:" + sourceImage.width + "*" + sourceImage.height)
  42. }).catch(res => {
  43. console.log(res)
  44. })
  45. }