public function read($filename)
    {
        $meta = new ValueBag();

        try {
            $fileEntity = $this->reader->reset()->files($filename)->first();
        } catch (\Exception $e) {
            return $meta;
        }

        if ($fileEntity->getMetadatas()->containsKey('File:ImageWidth')) {
            $meta->set(
                'image.width',
                new MetaValue((int) $fileEntity->getMetadatas()->get('File:ImageWidth')->getValue()->asString())
            );
        } elseif ($fileEntity->getMetadatas()->containsKey('PNG:ImageWidth')) {
            $meta->set(
                'image.width',
                new MetaValue((int) $fileEntity->getMetadatas()->get('PNG:ImageWidth')->getValue()->asString())
            );
        }

        if ($fileEntity->getMetadatas()->containsKey('File:ImageHeight')) {
            $meta->set(
                'image.height',
                new MetaValue((int) $fileEntity->getMetadatas()->get('File:ImageHeight')->getValue()->asString())
            );
        } elseif ($fileEntity->getMetadatas()->containsKey('PNG:ImageHeight')) {
            $meta->set(
                'image.height',
                new MetaValue((int) $fileEntity->getMetadatas()->get('PNG:ImageHeight')->getValue()->asString())
            );
        }

        foreach ($fileEntity->getMetadatas() as $metadata) {
            /* @var $metadata Metadata */

            if (ValueInterface::TYPE_BINARY === $metadata->getValue()->getType()) {
                continue;
            }

            $groupName = ($metadata->getTag()->getGroupName());
            $name = ($metadata->getTag()->getName());
            $value = (string) $metadata->getValue();
            if ($groupName === 'System' || !ctype_print($value)) {
                continue;
            }

            $path = "$groupName.$name";
            $meta->set($path, new MetaValue($value));
        }

        return $meta;
    }
public function read($filename)
    {
        $meta = new ValueBag();

        try {
            $fileEntity = $this->reader->reset()->files($filename)->first();
        } catch (\Exception $e) {
            return $meta;
        }

        if ($fileEntity->getMetadatas()->containsKey('File:ImageWidth')) {
            $meta->set(
                'image.width',
                new MetaValue((int) $fileEntity->getMetadatas()->get('File:ImageWidth')->getValue()->asString())
            );
        } elseif ($fileEntity->getMetadatas()->containsKey('PNG:ImageWidth')) {
            $meta->set(
                'image.width',
                new MetaValue((int) $fileEntity->getMetadatas()->get('PNG:ImageWidth')->getValue()->asString())
            );
        }

        if ($fileEntity->getMetadatas()->containsKey('File:ImageHeight')) {
            $meta->set(
                'image.height',
                new MetaValue((int) $fileEntity->getMetadatas()->get('File:ImageHeight')->getValue()->asString())
            );
        } elseif ($fileEntity->getMetadatas()->containsKey('PNG:ImageHeight')) {
            $meta->set(
                'image.height',
                new MetaValue((int) $fileEntity->getMetadatas()->get('PNG:ImageHeight')->getValue()->asString())
            );
        }

        foreach ($fileEntity->getMetadatas() as $metadata) {
            /* @var $metadata Metadata */

            if (ValueInterface::TYPE_BINARY === $metadata->getValue()->getType()) {
                continue;
            }

            $groupName = ($metadata->getTag()->getGroupName());
            $name = ($metadata->getTag()->getName());
            $value = (string) $metadata->getValue();
            if ($groupName === 'System' || !ctype_print($value)) {
                continue;
            }

            $path = "$groupName.$name";
            $meta->set($path, new MetaValue($value));
        }

        return $meta;
    }
{@inheritdoc}