mothership-ec/cog-imageresize

此包已被废弃,不再维护。未建议替代包。

为Cog提供的基于动态URI的图片缩放功能

2.0.1 2015-09-29 11:30 UTC

This package is not auto-updated.

Last update: 2021-03-22 11:08:19 UTC


README

缩放类和控制器

可以通过服务 image.resize 访问缩放器

$this->get('image.resize')->resize($url);

Resize-class有两个重要方法

  • generateUrl($url, $width, $height) - 生成一个包含文件名、宽度、高度和一个哈希的URL,该哈希将是文件的后续位置。$url是我们想要缩放的图像的公开可访问路径。此方法生成的URL可能看起来像这样:resize_directory/test_AUTOx400-de46b9.jpg
  • resize($url) - 执行实际的缩放,返回缩放后的文件并将其保存到由 $url 定义的路径中。传入的 $url 是由 generateUrl() 生成的URL。

这意味着,当我们有一个名为 test.jpg 的图像,它保存在 cog:://public/files 中时,我们可以这样缩放它

$resizer = $this->get('image.resize');
$url = $resizer->generateUrl('/files/test.jpg', null, 400); // you can leave out either height or width!
$resizedImg = $resizer->resize($url);

我们之所以采取生成URL的方式,是因为这允许我们通过控制器来控制行为:当我们想在视图中渲染缩放后的图像时,我们可以将生成的 $url 作为 src 属性传入。会发生的情况是,第一次请求图像时,路由器将调用图像缩放控制器,该控制器将缩放图像,将其保存到新位置并返回图像。之后,图像已经存在,可以像任何其他图像一样请求。

当与twig扩展一起使用时,这特别方便。

Twig扩展

有两种方法允许我们访问由 ImageResize\Resize 类提供的 generateUrl() 方法

  • getResizedUrl(ResizableInterface $file, $width, $height) - 使用 ResizableInterface 定义的 getUrl() 方法返回 Resizer::generateUrl 的结果

      <img src="{{ getResizedUrl(file, 500, 200) }}" width="500" height="200" alt="file.altText">
    
  • getResizedImage(ResizableInterface $file, $width, $height, $attributes = array()) - 返回一个渲染的 <img> 标签,包括 srcwidthheightalt(使用 ResizableInterface 的 getAltText() 方法)和通过 $attributes 数组使用的附加属性

      {# file->getUrl() = '/test.jpg' #}
      {# file->getAltText() = 'test' #}
    
      {{ getResizedImage(file, 500, 200, {'class': 'file'}) }}
    

    这将渲染

      <img src="/test_500x200-88953b.jpg" width="500" height="200" alt="test" class="file">
    

    如果 $attributes-array 提供了一个 alt 属性,则使用文件 getAltText() 来确定 alt 文本,而不是使用 $attributes['alt']

      {{ getResizedImage(file, 500, 200, {'alt': 'abcabc'}) }}
    

    这将返回这个

      <img src="/test_500x200-88953b.jpg" width="500" height="200" alt="abcabc">
    

默认图像

如果传递给 resize 方法的 $url 不是系统中的现有文件路径,则将缩放默认图像。

此默认图像可以在 config/app.yml 中配置

image-resize:
	default-image-path: cogules/MyApp:SetUp/images/default.png

generateUrl 方法查找文件时,如果文件不存在,则返回默认图像的URL。这样,每种大小只生成一个图像,并且一旦文件上传到服务器,就可以立即生成正确的缩放图像。