public function extractIcon($dataOrFile, $w, $h, array $opts = null)
    {
        $icon = $this->from($dataOrFile);
        $image = $icon->findBestForSize($w, $h);
        if (!$image) {
            //nothing at our required size, so we'll find the highest quality icon
            $image = $icon->findBest();
        }
        if (!$image) {
            throw new \DomainException('Icon does not contain any images.');
        }
        return $this->renderImage($image, $w, $h, $opts);
    }