mirror of
https://github.com/bpatrik/pigallery2.git
synced 2024-12-10 11:10:35 +02:00
parent
1f708d1c71
commit
8bd04dda8c
@ -166,6 +166,15 @@ export class MetadataLoader {
|
|||||||
const info = imageSize(fullPath);
|
const info = imageSize(fullPath);
|
||||||
metadata.size = {width: info.width, height: info.height};
|
metadata.size = {width: info.width, height: info.height};
|
||||||
}
|
}
|
||||||
|
if (OrientationTypes.BOTTOM_LEFT < metadata.orientation &&
|
||||||
|
metadata.orientation <= OrientationTypes.LEFT_BOTTOM &&
|
||||||
|
metadata.size.width > metadata.size.height) {
|
||||||
|
// noinspection JSSuspiciousNameCombination
|
||||||
|
const height = metadata.size.width;
|
||||||
|
// noinspection JSSuspiciousNameCombination
|
||||||
|
metadata.size.width = metadata.size.height;
|
||||||
|
metadata.size.height = height;
|
||||||
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
Logger.debug(LOG_TAG, 'Error parsing exif', fullPath, err);
|
Logger.debug(LOG_TAG, 'Error parsing exif', fullPath, err);
|
||||||
try {
|
try {
|
||||||
|
BIN
test/backend/assets/broken_orientation_exif.jpg
Normal file
BIN
test/backend/assets/broken_orientation_exif.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 250 KiB |
24
test/backend/assets/broken_orientation_exif.json
Normal file
24
test/backend/assets/broken_orientation_exif.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"size": {
|
||||||
|
"width": 3024,
|
||||||
|
"height": 4032
|
||||||
|
},
|
||||||
|
"orientation": 6,
|
||||||
|
"creationDate": 1518964712000,
|
||||||
|
"fileSize": 256001,
|
||||||
|
"cameraData": {
|
||||||
|
"model": "Pixel 2",
|
||||||
|
"make": "Google",
|
||||||
|
"ISO": 116,
|
||||||
|
"focalLength": 4.442,
|
||||||
|
"exposure": 0.008335,
|
||||||
|
"fStop": 1.8
|
||||||
|
},
|
||||||
|
"positionData": {
|
||||||
|
"GPSData": {
|
||||||
|
"longitude": -73.96425083333334,
|
||||||
|
"latitude": 40.77845111111111,
|
||||||
|
"altitude": 2.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
test/backend/assets/broken_orientation_exif2.jpg
Normal file
BIN
test/backend/assets/broken_orientation_exif2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 121 KiB |
17
test/backend/assets/broken_orientation_exif2.json
Normal file
17
test/backend/assets/broken_orientation_exif2.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"cameraData": {
|
||||||
|
"ISO": 100,
|
||||||
|
"exposure": 0.001,
|
||||||
|
"fStop": 2.8,
|
||||||
|
"focalLength": 6.1,
|
||||||
|
"make": "Panasonic",
|
||||||
|
"model": "DMC-LZ7"
|
||||||
|
},
|
||||||
|
"creationDate": 1185452882000,
|
||||||
|
"fileSize": 124036,
|
||||||
|
"orientation": 8,
|
||||||
|
"size": {
|
||||||
|
"height": 3072,
|
||||||
|
"width": 2304
|
||||||
|
}
|
||||||
|
}
|
@ -12,10 +12,11 @@ describe('DiskMangerWorker', () => {
|
|||||||
ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets');
|
ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets');
|
||||||
const dir = await DiskMangerWorker.scanDirectory('/');
|
const dir = await DiskMangerWorker.scanDirectory('/');
|
||||||
// should match the number of media (photo/video) files in the assets folder
|
// should match the number of media (photo/video) files in the assets folder
|
||||||
expect(dir.media.length).to.be.equals(7);
|
expect(dir.media.length).to.be.equals(9);
|
||||||
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
|
||||||
expect(Utils.clone(dir.media[3].name)).to.be.deep.equal('test image öüóőúéáű-.,.jpg');
|
const i = dir.media.findIndex(m => m.name === 'test image öüóőúéáű-.,.jpg');
|
||||||
expect(Utils.clone(dir.media[3].metadata)).to.be.deep.equal(expected);
|
expect(Utils.clone(dir.media[i].name)).to.be.deep.equal('test image öüóőúéáű-.,.jpg');
|
||||||
|
expect(Utils.clone(dir.media[i].metadata)).to.be.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -31,6 +31,19 @@ describe('MetadataLoader', () => {
|
|||||||
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('should load jpg with proper height and orientation', () => {
|
||||||
|
it('jpg 1', async () => {
|
||||||
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/broken_orientation_exif.jpg'));
|
||||||
|
const expected = require(path.join(__dirname, '/../../../assets/broken_orientation_exif.json'));
|
||||||
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
|
});
|
||||||
|
it('jpg 2', async () => {
|
||||||
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/broken_orientation_exif2.jpg'));
|
||||||
|
const expected = require(path.join(__dirname, '/../../../assets/broken_orientation_exif2.json'));
|
||||||
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
it('should load jpg edited with exiftool', async () => {
|
it('should load jpg edited with exiftool', async () => {
|
||||||
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/exiftool.jpg'));
|
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/exiftool.jpg'));
|
||||||
@ -48,6 +61,8 @@ describe('MetadataLoader', () => {
|
|||||||
it('should respect mp4 rotate transformation', async () => {
|
it('should respect mp4 rotate transformation', async () => {
|
||||||
const data = await MetadataLoader.loadVideoMetadata(path.join(__dirname, '/../../../assets/video_rotate.mp4'));
|
const data = await MetadataLoader.loadVideoMetadata(path.join(__dirname, '/../../../assets/video_rotate.mp4'));
|
||||||
const expected = require(path.join(__dirname, '/../../../assets/video_rotate.json'));
|
const expected = require(path.join(__dirname, '/../../../assets/video_rotate.json'));
|
||||||
|
delete data.duration;
|
||||||
|
delete expected.duration;
|
||||||
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
expect(Utils.clone(data)).to.be.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user