diff options
Diffstat (limited to 'public/assets/js/lib/views/UploadView.js')
| -rw-r--r-- | public/assets/js/lib/views/UploadView.js | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/public/assets/js/lib/views/UploadView.js b/public/assets/js/lib/views/UploadView.js index 5acc39a..c622bb9 100644 --- a/public/assets/js/lib/views/UploadView.js +++ b/public/assets/js/lib/views/UploadView.js @@ -25,10 +25,44 @@ var UploadView = View.extend({ var file = files[0] if (! file) return - if ( ! file.type.match('image.*')) return + if (! file.type.match('image.*')) return this.file = file - app.views.home.PhotoView.load( file ) + if (file.type.match(/jpg|jpeg/)) { + this.fixOrientationAndLoad(file) + } + else { + var url = URL.createObjectURL(file) + this.load(url) + } + }, + + fixOrientationAndLoad: function(f){ + var reader = new FileReader() + var img = new Image () + + reader.addEventListener("load", function () { + img.src = reader.result + }, false) + + img.onload = function(){ + var max_side = Math.max(img.naturalWidth, img.naturalHeight) + var scale = Math.min(1280 / max_side, 1) + var canvas = renderToCanvas(img, { + correctOrientation: true, + scale: scale + }) + + var dataURI = canvas.toDataURL("image/jpeg", 0.8) + var blob = dataUriToBlob( dataURI ) + this.upload(blob) + }.bind(this) + + reader.readAsDataURL(f) + }, + + load: function( url ){ + app.views.home.PhotoView.load( url ) }, upload: function(file){ |
