Example #1
0
 /**
  * {@inheritdoc}
  */
 public function get($key, $raw = false)
 {
     if ($this->has($key)) {
         $this->image->close();
         $this->image->load($this->pool[$key]);
         return $raw ? $this->image->getImageBlob() : $this->image;
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function setHeaders(Response $response, ImageInterface $image, \DateTime $lastMod)
 {
     $response->headers->set('Content-type', $image->getMimeType());
     $response->setContent($content = $image->getContents());
     $response->setLastModified($lastMod);
     $response->setEtag(hash('md5', $response->getContent()));
     $response->headers->set('Accept-ranges', 'bytes');
     $response->headers->set('Keep-Alive', 'timeout=15, max=200');
     $response->headers->set('Connection', 'Keep-Alive', true);
 }
 /**
  * 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);
     }
 }
Example #4
0
 /**
  * {@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);
     }
 }
Example #5
0
 /**
  * {@inheritDoc}
  */
 public function resolve()
 {
     $this->image->close();
     if (!$this->canResolve()) {
         return false;
     }
     $this->parseAll();
     if ($this->config->cache && ($image = $this->resolveFromCache($id = $this->getImageRequestId($this->getInputQuery(), $this->input['source'])))) {
         return $image;
     }
     // something went wrong
     if (!($img = $this->isReadableFile($this->parameter))) {
         return false;
     }
     // something went wrong
     if (!$this->image->load($img)) {
         return false;
     }
     $this->image->process($this);
     if ($this->config->cache) {
         $this->processCache->put($id, $this->image->getContents());
     }
     return $this->image;
 }
Example #6
0
 /**
  * getProcessedCacheName
  *
  * @param ImageInterface $image
  * @param string $requestString
  * @param string $srouce
  *
  * @access protected
  * @return string
  */
 protected function getProcessedCacheId(ImageInterface $image, $requestString, $source)
 {
     $osuffix = $image->getSourceFormat();
     $psuffix = $image->getFileFormat();
     unset($this->cachedNames[$requestString]);
     $this->cachedNames[$requestString] = $this->processCache->createKey($source . $osuffix . $psuffix, $requestString, $this->config->cache_prefix, $psuffix);
     return $this->cachedNames[$requestString];
 }