You are here

public function ImageStyle::buildUri in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/image/src/Entity/ImageStyle.php \Drupal\image\Entity\ImageStyle::buildUri()

Returns the URI of this image when using this style.

The path returned by this function may not exist. The default generation method only creates images when they are requested by a user's browser. Modules may implement this method to decide where to place derivatives.

Parameters

string $uri: The URI or path to the original image.

Return value

string The URI to the image derivative for this style.

Overrides ImageStyleInterface::buildUri

2 calls to ImageStyle::buildUri()
ImageStyle::buildUrl in core/modules/image/src/Entity/ImageStyle.php
Returns the URL of this image derivative for an original image path or URI.
ImageStyle::flush in core/modules/image/src/Entity/ImageStyle.php
Flushes cached media for this style.

File

core/modules/image/src/Entity/ImageStyle.php, line 176

Class

ImageStyle
Defines an image style configuration entity.

Namespace

Drupal\image\Entity

Code

public function buildUri($uri) {
  $source_scheme = $scheme = StreamWrapperManager::getScheme($uri);
  $default_scheme = $this
    ->fileDefaultScheme();
  if ($source_scheme) {
    $path = StreamWrapperManager::getTarget($uri);

    // The scheme of derivative image files only needs to be computed for
    // source files not stored in the default scheme.
    if ($source_scheme != $default_scheme) {
      $class = $this
        ->getStreamWrapperManager()
        ->getClass($source_scheme);
      $is_writable = NULL;
      if ($class) {
        $is_writable = $class::getType() & StreamWrapperInterface::WRITE;
      }

      // Compute the derivative URI scheme. Derivatives created from writable
      // source stream wrappers will inherit the scheme. Derivatives created
      // from read-only stream wrappers will fall-back to the default scheme.
      $scheme = $is_writable ? $source_scheme : $default_scheme;
    }
  }
  else {
    $path = $uri;
    $source_scheme = $scheme = $default_scheme;
  }
  return "{$scheme}://styles/{$this->id()}/{$source_scheme}/{$this->addExtension($path)}";
}