|
1 | 1 | <!DOCTYPE HTML> |
2 | 2 | <!-- |
3 | 3 | /* |
4 | | - * JavaScript Load Image Demo 1.5 |
| 4 | + * JavaScript Load Image Demo 1.6 |
5 | 5 | * https://github.com/blueimp/JavaScript-Load-Image |
6 | 6 | * |
7 | 7 | * Copyright 2011, Sebastian Tschan |
@@ -68,45 +68,65 @@ <h2>Result</h2> |
68 | 68 | </div> |
69 | 69 | </div> |
70 | 70 | </div> |
71 | | -<script src="load-image.min.js"></script> |
| 71 | +<script src="load-image.js"></script> |
72 | 72 | <!-- jQuery is not required, but included for the demo --> |
73 | 73 | <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> |
| 74 | +<!-- EXIF Reader library to demonstrate the orientation option --> |
| 75 | +<script src="vendor/exif-reader.js"></script> |
74 | 76 | <script> |
75 | | -/*global jQuery, window, document, HTMLCanvasElement */ |
| 77 | +/*global jQuery, window, document, HTMLCanvasElement, ExifReader */ |
76 | 78 | (function ($) { |
77 | 79 | 'use strict'; |
78 | 80 | var result = $('#result'), |
79 | | - load = function (e) { |
80 | | - e = e.originalEvent; |
81 | | - e.preventDefault(); |
| 81 | + displayFile = function (file, options) { |
82 | 82 | if (!window.loadImage( |
83 | | - (e.dataTransfer || e.target).files[0], |
| 83 | + file, |
84 | 84 | function (img) { |
85 | 85 | if (!(img.src || img instanceof HTMLCanvasElement)) { |
86 | 86 | img = $('<div><span class="label label-important">Error</span>' + |
87 | 87 | ' <span>Loading image file failed</span></div>'); |
88 | 88 | } |
89 | 89 | result.children().replaceWith(img); |
90 | 90 | }, |
91 | | - { |
92 | | - maxWidth: result.children().outerWidth(), |
93 | | - canvas: true |
94 | | - } |
| 91 | + options |
95 | 92 | )) { |
96 | 93 | result.children().replaceWith( |
97 | 94 | $('<div><span class="label label-important">Error</span>' + |
98 | 95 | ' <span>Your browser does not support the URL or FileReader API.</span></div>') |
99 | 96 | ); |
100 | 97 | } |
| 98 | + }, |
| 99 | + dropChangeHandler = function (e) { |
| 100 | + e = e.originalEvent; |
| 101 | + e.preventDefault(); |
| 102 | + var file = (e.dataTransfer || e.target).files[0], |
| 103 | + slice = file.slice || file.webkitSlice || file.mozSlice, |
| 104 | + options = { |
| 105 | + maxWidth: result.children().outerWidth(), |
| 106 | + canvas: true |
| 107 | + }; |
| 108 | + if (!window.DataView || !window.loadImage.readFile( |
| 109 | + (slice && slice.call(file, 0, 131072)) || file, |
| 110 | + function (e) { |
| 111 | + var exif = new ExifReader(); |
| 112 | + exif.load(e.target.result); |
| 113 | + options.orientation = exif.getTagValue('Orientation'); |
| 114 | + displayFile(file, options); |
| 115 | + }, |
| 116 | + 'readAsArrayBuffer' |
| 117 | + )) { |
| 118 | + displayFile(file, options); |
| 119 | + } |
| 120 | + |
101 | 121 | }; |
102 | 122 | $(document) |
103 | 123 | .on('dragover', function (e) { |
104 | 124 | e = e.originalEvent; |
105 | 125 | e.preventDefault(); |
106 | 126 | e.dataTransfer.dropEffect = 'copy'; |
107 | 127 | }) |
108 | | - .on('drop', load); |
109 | | - $('#file-input').on('change', load); |
| 128 | + .on('drop', dropChangeHandler); |
| 129 | + $('#file-input').on('change', dropChangeHandler); |
110 | 130 | }(jQuery)); |
111 | 131 | </script> |
112 | 132 | </body> |
|
0 commit comments