Imbo\EventListener\ExifMetadata::populate PHP Method

populate() public method

Read exif data from incoming image
public populate ( Imbo\EventManager\EventInterface $event ) : array
$event Imbo\EventManager\EventInterface The triggered event
return array
    public function populate(EventInterface $event)
    {
        $image = $event->getRequest()->getImage();
        // Get EXIF-properties from image
        $imagick = $this->getImagick();
        $imagick->readImageBlob($image->getBlob());
        $properties = $imagick->getImageProperties();
        // Fix trailing spaces
        foreach ($properties as $key => $value) {
            unset($properties[$key]);
            $properties[trim($key)] = $value;
        }
        // Filter and parse properties
        $properties = $this->filterProperties($properties);
        $properties = $this->parseProperties($properties);
        // Set properties to save on successful image insertion
        $this->properties = $properties;
        return $properties;
    }

Usage Example

Exemplo n.º 1
0
 /**
  * @dataProvider getFilterData
  * @covers Imbo\EventListener\ExifMetadata::setImagick
  * @covers Imbo\EventListener\ExifMetadata::getImagick
  * @covers Imbo\EventListener\ExifMetadata::populate
  * @covers Imbo\EventListener\ExifMetadata::save
  * @covers Imbo\EventListener\ExifMetadata::filterProperties
  * @covers Imbo\EventListener\ExifMetadata::parseProperties
  */
 public function testCanFilterData($data, $tags, $expectedData)
 {
     $user = '******';
     $imageIdentifier = 'imageIdentifier';
     $blob = 'blob';
     $image = $this->getMock('Imbo\\Model\\Image');
     $image->expects($this->once())->method('getImageIdentifier')->will($this->returnValue($imageIdentifier));
     $image->expects($this->once())->method('getBlob')->will($this->returnValue($blob));
     $imagick = $this->getMock('Imagick');
     $imagick->expects($this->once())->method('readImageBlob')->will($this->returnValue($blob));
     $imagick->expects($this->once())->method('getImageProperties')->will($this->returnValue($data));
     $request = $this->getMock('Imbo\\Http\\Request\\Request');
     $request->expects($this->once())->method('getUser')->will($this->returnValue($user));
     $request->expects($this->any())->method('getImage')->will($this->returnValue($image));
     $database = $this->getMock('Imbo\\Database\\DatabaseInterface');
     $database->expects($this->once())->method('updateMetadata')->with($user, $imageIdentifier, $expectedData);
     $event = $this->getMock('Imbo\\EventManager\\Event');
     $event->expects($this->exactly(2))->method('getRequest')->will($this->returnValue($request));
     $event->expects($this->once())->method('getDatabase')->will($this->returnValue($database));
     $listener = new ExifMetadata(['allowedTags' => $tags]);
     $listener->setImagick($imagick);
     $listener->populate($event);
     $listener->save($event);
 }
All Usage Examples Of Imbo\EventListener\ExifMetadata::populate