/**
  * Creates a new response.
  *
  * @param Image $image
  * @access public
  * @final
  * @return void
  */
 public final function make(ImageInterface $image)
 {
     $this->response = new Response(null, 200);
     $this->response->setPublic();
     $lastMod = (new \DateTime())->setTimestamp($modDate = $image->getLastModTime());
     $mod = strtotime($this->request->headers->get('if-modified-since', time()));
     if (($image instanceof CachedImage || !$image->isProcessed()) && $mod === $modDate) {
         $this->setHeadersIfNotProcessed($this->response, $lastMod);
     } else {
         $this->setHeaders($this->response, $image, $lastMod);
     }
 }
 /**
  * {@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);
     }
 }