2011-08-21 18:05:34 +00:00
|
|
|
<?php
|
2013-10-24 16:45:52 +00:00
|
|
|
|
|
|
|
|
/**
|
2014-07-15 17:31:07 +00:00
|
|
|
* @group Media
|
2013-10-24 16:45:52 +00:00
|
|
|
* @covers Exif
|
|
|
|
|
*/
|
2011-08-21 18:05:34 +00:00
|
|
|
class ExifTest extends MediaWikiTestCase {
|
|
|
|
|
|
2013-10-23 22:12:39 +00:00
|
|
|
/** @var string */
|
|
|
|
|
protected $mediaPath;
|
|
|
|
|
|
2019-10-20 18:11:08 +00:00
|
|
|
protected function setUp() : void {
|
2012-10-08 10:56:20 +00:00
|
|
|
parent::setUp();
|
2013-11-23 19:20:23 +00:00
|
|
|
$this->checkPHPExtension( 'exif' );
|
2012-10-08 10:56:20 +00:00
|
|
|
|
2012-08-27 19:03:15 +00:00
|
|
|
$this->mediaPath = __DIR__ . '/../../data/media/';
|
2011-08-21 18:05:34 +00:00
|
|
|
|
2012-10-08 10:56:20 +00:00
|
|
|
$this->setMwGlobals( 'wgShowEXIF', true );
|
2012-03-07 01:09:35 +00:00
|
|
|
}
|
2011-08-21 18:05:34 +00:00
|
|
|
|
2012-03-07 01:09:35 +00:00
|
|
|
public function testGPSExtraction() {
|
2011-08-21 18:05:34 +00:00
|
|
|
$filename = $this->mediaPath . 'exif-gps.jpg';
|
2013-02-15 10:17:52 +00:00
|
|
|
$seg = JpegMetadataExtractor::segmentSplitter( $filename );
|
2011-08-21 18:05:34 +00:00
|
|
|
$exif = new Exif( $filename, $seg['byteOrder'] );
|
|
|
|
|
$data = $exif->getFilteredData();
|
2016-02-17 09:09:32 +00:00
|
|
|
$expected = [
|
2011-08-21 18:05:34 +00:00
|
|
|
'GPSLatitude' => 88.5180555556,
|
|
|
|
|
'GPSLongitude' => -21.12357,
|
2012-08-17 00:41:13 +00:00
|
|
|
'GPSAltitude' => -3.141592653,
|
2011-08-21 18:05:34 +00:00
|
|
|
'GPSDOP' => '5/1',
|
|
|
|
|
'GPSVersionID' => '2.2.0.0',
|
2016-02-17 09:09:32 +00:00
|
|
|
];
|
2019-12-14 12:22:50 +00:00
|
|
|
$this->assertEqualsWithDelta( $expected, $data, 0.0000000001 );
|
2011-08-21 18:05:34 +00:00
|
|
|
}
|
|
|
|
|
|
2012-03-07 01:09:35 +00:00
|
|
|
public function testUnicodeUserComment() {
|
2011-08-21 18:05:34 +00:00
|
|
|
$filename = $this->mediaPath . 'exif-user-comment.jpg';
|
2013-02-15 10:17:52 +00:00
|
|
|
$seg = JpegMetadataExtractor::segmentSplitter( $filename );
|
2011-08-21 18:05:34 +00:00
|
|
|
$exif = new Exif( $filename, $seg['byteOrder'] );
|
|
|
|
|
$data = $exif->getFilteredData();
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$expected = [
|
2017-04-26 12:01:49 +00:00
|
|
|
'UserComment' => 'test⁔comment',
|
2016-02-17 09:09:32 +00:00
|
|
|
];
|
2011-08-21 18:05:34 +00:00
|
|
|
$this->assertEquals( $expected, $data );
|
|
|
|
|
}
|
|
|
|
|
}
|