You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.8 KiB

  1. var Avatar = {
  2. file : function(files) {
  3. var f = files[0];
  4. if (!f.type.match(/image.*/)) {
  5. console.log("Not a picture !");
  6. } else {
  7. var reader = new FileReader();
  8. reader.readAsDataURL(f);
  9. reader.onload = function (ev) {
  10. var img = new Image();
  11. img.src = ev.target.result;
  12. Avatar.preview(img.src);
  13. };
  14. };
  15. },
  16. preview : function(src) {
  17. var canvas = document.createElement('canvas');
  18. width = height = canvas.width = canvas.height = 410;
  19. var image = new Image();
  20. image.src = src;
  21. image.onload = function(){
  22. if (image.width == image.height) {
  23. canvas.getContext("2d").drawImage(image, 0, 0, width, height);
  24. } else {
  25. minVal = parseInt(Math.min(image.width, image.height));
  26. if (image.width > image.height) {
  27. canvas.getContext("2d").drawImage(image, (parseInt(image.width) - minVal) / 2, 0, minVal, minVal, 0, 0, width, height);
  28. } else {
  29. canvas.getContext("2d").drawImage(image, 0, (parseInt(image.height) - minVal) / 2, minVal, minVal, 0, 0, width, height);
  30. }
  31. }
  32. var base64 = canvas.toDataURL('image/jpeg', 0.8);
  33. var preview = document.querySelector('form[name=avatarform] img');
  34. var input = document.querySelector('input[name="photobin"]');
  35. preview.src = base64;
  36. var bin = base64.split(",");
  37. input.value = bin[1];
  38. }
  39. }
  40. }
  41. function showVideo(){
  42. navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
  43. navigator.getUserMedia({video:true, audio:false}, successCallback, errorCallback);
  44. movim_toggle_class('#camdiv', 'active');
  45. }
  46. function successCallback(stream) {
  47. video = document.getElementById("runningcam");
  48. video.src = window.URL.createObjectURL(stream);
  49. localMediaStream = stream; // stream available to console
  50. document.getElementById("shoot").addEventListener('click', snapshot, false);
  51. }
  52. function errorCallback(error){
  53. console.log("navigator.getUserMedia error: ", error);
  54. }
  55. function snapshot() {
  56. if (localMediaStream) {
  57. canvas = document.querySelector("canvas");
  58. canvas.width = video.videoWidth;
  59. canvas.height = video.videoHeight;
  60. ctx = canvas.getContext('2d');
  61. video = document.getElementById("runningcam");
  62. ctx.drawImage(video,0,0, canvas.width, canvas.height);
  63. // "image/webp" works in Chrome 18. In other browsers, this will fall back to image/png.
  64. var img = new Image();
  65. img.src = canvas.toDataURL('image/png');
  66. img.onload = function() {
  67. vCardImageResize(this);
  68. }
  69. }
  70. }