|
23 | 23 | 'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7' |
24 | 24 | var imageUrlGIF = 'data:image/gif;base64,' + b64DataGIF |
25 | 25 | var blobGIF = canCreateBlob && window.dataURLtoBlob(imageUrlGIF) |
26 | | - // 2x1px JPEG (color white, with the Exif orientation flag set to 6 and the |
27 | | - // IPTC ObjectName (2:5) set to 'objectname'): |
| 26 | + // black/white 1x2px JPEG, with the following meta information set: |
| 27 | + // - EXIF Orientation: 6 (Rotated 90° CCW) |
| 28 | + // - IPTC ObjectName: blueimp.net |
| 29 | + // Meta information has been set via exiftool (exiftool.org): |
| 30 | + // exiftool -all= -Orientation#=6 -YCbCrPositioning= -ResolutionUnit= \ |
| 31 | + // -YResolution= -XResolution= -ObjectName=blueimp.net black+white-1x2.jpg |
28 | 32 | var b64DataJPEG = |
29 | | - '/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAA' + |
30 | | - 'BgASAAAAAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAA8cAgUACm9iamVj' + |
31 | | - 'dG5hbWUA/9sAQwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' + |
32 | | - 'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEB' + |
33 | | - 'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' + |
34 | | - '/8AAEQgAAQACAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYH' + |
35 | | - 'CAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh' + |
36 | | - 'CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldY' + |
37 | | - 'WVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1' + |
38 | | - 'tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B' + |
39 | | - 'AAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAEC' + |
40 | | - 'dwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka' + |
41 | | - 'JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWG' + |
42 | | - 'h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ' + |
43 | | - '2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/v4ooooA/9k=' |
| 33 | + '/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/7QA0UGhvdG9zaG9wIDMu' + |
| 34 | + 'MAA4QklNBAQAAAAAABccAgUAC2JsdWVpbXAubmV0HAIAAAIABAD/2wCEAAEBAQEBAQIBAQID' + |
| 35 | + 'AgICAwQDAwMDBAYEBAQEBAYHBgYGBgYGBwcHBwcHBwcICAgICAgJCQkJCQsLCwsLCwsLCwsB' + |
| 36 | + 'AgICAwMDBQMDBQsIBggLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsL' + |
| 37 | + 'CwsLCwsLCwsLC//AABEIAAIAAQMBIgACEQEDEQH/xABSAAEBAAAAAAAAAAAAAAAAAAAAChAB' + |
| 38 | + 'AAAHAAAAAAAAAAAAAAAAAAUHCRlYltQBAQAAAAAAAAAAAAAAAAAAAAARAQAAAAAAAAAAAAAA' + |
| 39 | + 'AAAAAAD/2gAMAwEAAhEDEQA/AK+bT1LLGmVWmwjlAB//2Q==' |
44 | 40 | var imageUrlJPEG = 'data:image/jpeg;base64,' + b64DataJPEG |
45 | 41 | var blobJPEG = canCreateBlob && window.dataURLtoBlob(imageUrlJPEG) |
46 | 42 | /** |
|
646 | 642 | function (img) { |
647 | 643 | expect(img.width).to.equal(10) |
648 | 644 | expect(img.height).to.equal(10) |
649 | | - |
650 | | - var data = img.getContext('2d').getImageData(0, 0, 10, 10).data |
651 | | - for (var i = 0; i < data.length / 4; i += 4) { |
652 | | - expect(data[i]).to.equal(0) |
653 | | - expect(data[i + 1]).to.equal(0) |
654 | | - expect(data[i + 2]).to.equal(0) |
655 | | - expect(data[i + 3]).to.equal(255) |
| 645 | + var imageData = img.getContext('2d').getImageData(0, 0, 10, 10).data |
| 646 | + // Check if all image pixels are opaque black (0, 0, 0, 255): |
| 647 | + for (var i = 0; i < imageData.length / 4; i += 4) { |
| 648 | + expect(imageData[i]).to.equal(0) |
| 649 | + expect(imageData[i + 1]).to.equal(0) |
| 650 | + expect(imageData[i + 2]).to.equal(0) |
| 651 | + expect(imageData[i + 3]).to.equal(255) |
656 | 652 | } |
657 | | - |
658 | 653 | done() |
659 | 654 | }, |
660 | 655 | { maxWidth: 10, maxHeight: 10, crop: true, downsamplingRatio: 0.5 } |
|
844 | 839 | expect(data).to.be.ok |
845 | 840 | expect(data.exif).to.be.ok |
846 | 841 | expect(data.exif.get('Orientation')).to.equal(6) |
847 | | - expect(img.width).to.equal(1) |
848 | | - expect(img.height).to.equal(2) |
| 842 | + expect(img.width).to.equal(2) |
| 843 | + expect(img.height).to.equal(1) |
| 844 | + var imageData = img.getContext('2d').getImageData(0, 0, 2, 2).data |
| 845 | + // 0:0 opaque white |
| 846 | + expect(imageData[0]).to.equal(255) |
| 847 | + expect(imageData[1]).to.equal(255) |
| 848 | + expect(imageData[2]).to.equal(255) |
| 849 | + expect(imageData[3]).to.equal(255) |
| 850 | + // 0:1 opaque black |
| 851 | + expect(imageData[0 + 4]).to.equal(0) |
| 852 | + expect(imageData[1 + 4]).to.equal(0) |
| 853 | + expect(imageData[2 + 4]).to.equal(0) |
| 854 | + expect(imageData[3 + 4]).to.equal(255) |
| 855 | + // 1:0 transparent black (off canvas) |
| 856 | + expect(imageData[0 + 8]).to.equal(0) |
| 857 | + expect(imageData[1 + 8]).to.equal(0) |
| 858 | + expect(imageData[2 + 8]).to.equal(0) |
| 859 | + expect(imageData[3 + 8]).to.equal(0) |
| 860 | + // 1:1 transparent black (off canvas) |
| 861 | + expect(imageData[0 + 12]).to.equal(0) |
| 862 | + expect(imageData[1 + 12]).to.equal(0) |
| 863 | + expect(imageData[2 + 12]).to.equal(0) |
| 864 | + expect(imageData[3 + 12]).to.equal(0) |
849 | 865 | done() |
850 | 866 | }, |
851 | 867 | { orientation: true } |
|
858 | 874 | loadImage( |
859 | 875 | blobJPEG, |
860 | 876 | function (img) { |
861 | | - expect(img.width).to.equal(10) |
862 | | - expect(img.height).to.equal(20) |
| 877 | + expect(img.width).to.equal(20) |
| 878 | + expect(img.height).to.equal(10) |
863 | 879 | done() |
864 | 880 | }, |
865 | | - { orientation: true, minWidth: 10, minHeight: 20 } |
| 881 | + { orientation: true, minWidth: 20, minHeight: 10 } |
866 | 882 | ) |
867 | 883 | ).to.be.ok |
868 | 884 | }) |
|
942 | 958 | it('Should parse IPTC tags', function (done) { |
943 | 959 | loadImage.parseMetaData(blobJPEG, function (data) { |
944 | 960 | expect(data.iptc).to.be.ok |
945 | | - expect(data.iptc.get('ObjectName')).to.equal('objectname') |
| 961 | + expect(data.iptc.get('ObjectName')).to.equal('blueimp.net') |
946 | 962 | done() |
947 | 963 | }) |
948 | 964 | }) |
|
971 | 987 | expect(data.exif).to.be.ok |
972 | 988 | expect(data.exif.get('Orientation')).to.equal(6) |
973 | 989 | expect(data.iptc).to.be.ok |
974 | | - expect(data.iptc.get('ObjectName')).to.equal('objectname') |
| 990 | + expect(data.iptc.get('ObjectName')).to.equal('blueimp.net') |
975 | 991 | done() |
976 | 992 | }, |
977 | 993 | { meta: true } |
|
998 | 1014 | expect(data.exif).to.be.ok |
999 | 1015 | expect(data.exif.get('Orientation')).to.equal(6) |
1000 | 1016 | expect(data.iptc).to.be.ok |
1001 | | - expect(data.iptc.get('ObjectName')).to.equal('objectname') |
| 1017 | + expect(data.iptc.get('ObjectName')).to.equal('blueimp.net') |
1002 | 1018 | done() |
1003 | 1019 | }, |
1004 | 1020 | { meta: true } |
|
1011 | 1027 | loadImage(imageUrlJPEG, function (img, data) { |
1012 | 1028 | expect(data.imageHead).to.be.undefined |
1013 | 1029 | expect(data.exif).to.be.undefined |
1014 | | - expect(img.width).to.equal(2) |
1015 | | - expect(img.height).to.equal(1) |
| 1030 | + expect(img.width).to.equal(1) |
| 1031 | + expect(img.height).to.equal(2) |
1016 | 1032 | done() |
1017 | 1033 | }) |
1018 | 1034 | ).to.be.ok |
|
0 commit comments