|
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