/**
  * {@inheritdoc}
  */
 protected function setHeaders(Response $response, ImageInterface $image, \DateTime $lastMod)
 {
     $response->headers->set('Content-type', $image->getMimeType());
     $response->setLastModified($lastMod);
     $response->headers->set('Accept-ranges', 'bytes');
     $response->headers->set('Keep-Alive', 'timeout=5, max=99');
     $response->headers->set('Connection', 'keep-alive', true);
     // return normal by setting image contents;
     if ($image->isProcessed()) {
         $response->setContent($content = $image->getContents());
         $response->setEtag(hash('md5', $content));
     } else {
         // set the xsend header:
         $file = $image->getSource();
         $response->setEtag(md5_file($file));
         $response->headers->set('Content-Length', filesize($file));
         $response->headers->set('Content-Disposition', sprintf('inline; filename="%s"', basename($file)));
         $response->headers->set('X-Sendfile', $file);
     }
 }
 /**
  * {@inheritDoc}
  */
 public function getImageUrl(ImageInterface $image)
 {
     if (false !== strpos($image->getSource(), $this->config->base)) {
         $base = substr($image->getSource(), strlen($this->config->base));
         $input = $this->input;
         return sprintf('/%s', trim(implode('/', [$this->config->base_route, $input['parameter'], trim($base, '/'), $input['filter']]), '/'));
     }
 }