在Silverstripe中制作灰度图像

面子

我希望能够在控制器中以黑白方式返回图像,因此可以在模板中使用它。此页面上,我发现GD类具有灰度方法。不幸的是,我不理解GD类以及如何使用它。我试着做

$final = $image->getFormattedImage('greyscale',36,36,36);

但这没有用。它确实返回具有新URL的图像对象,但是该图像不存在。

谁能向我解释如何在Silverstripe页面控制器中将图像对象转换为灰度图像?

木乃

好吧,我自己去了,这就是我想出的:

_config.php

Object::add_extension('Image', 'Greyscaled');

更新:从SilverStripe 3.1开始,您应该使用config系统而不是_config.php将以下内容放入您的文件中mysite/_config/config.yml?flush=1添加配置缓存后,请不要忘记重新加载它):

Image:
  extensions:
    - 'Greyscaled'

Greyscaled.php

<?php
class Greyscaled extends DataExtension {
    //This allows the template to pick up "GreyscaleImage" property, it requests a copy of the image from the cache or if it doesn't exist, generates a new one
    public function GreyscaleImage($RGB = '76 147 29') {
        return $this->owner->getFormattedImage('GreyscaleImage', $RGB);
    }

    //This is called internally by "generateFormattedImage" when the item is not already cached
    public function generateGreyscaleImage(GD $gd, $RGB) {
        $Vars = explode(' ', $RGB);
        return $gd->greyscale($Vars[0], $Vars[1], $Vars[2]);
    }
}

UPDATE2:使用3.1的较新版本?您可以传入两个以上的参数,并且GD已重命名为Image_Backend。这样,图像名称中的RGB值之间就没有空格。请注意,$ gd-> greyscale需要大量汁液-因此您可能会先缩小尺寸,然后再缩小尺寸。

UPDATE3:因为这个答案最近获得了一些投票,所以我认为人们仍在使用它,但是我认为在2017年,CSS过滤器在许多情况下是一个更好的选择。加上前缀,您将拥有近90%的覆盖率。caniuse.com上的css-filters

<?php
class Greyscaled extends DataExtension {
    public function GreyscaleImage($R = '76', $G = '147', $B = '29') {
        return $this->owner->getFormattedImage('GreyscaleImage', $R, $G, $B);
    }
    public function generateGreyscaleImage(Image_Backend $gd, $R, $G, $B) {
        return $gd->greyscale($R, $G, $B);
    }
}

并在模板中:

<img src="$Images.GreyscaleImage.CroppedImage(1000,400).URL" alt="$Images.Title" />

Silverstripe 3.1图像API

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在以Quirks模式运行的IE11中使用CSS制作灰度图像

来自分类Dev

灰度图像中像素的质心

来自分类Dev

C ++中的灰度图像处理

来自分类Dev

访问灰度图像中的像素

来自分类Dev

图像处理-Matlab中TIFF图像的灰度

来自分类Dev

如何在xCode中从灰度图像获取像素的灰度值

来自分类Dev

如何在xCode中从灰度图像获取像素的灰度值

来自分类Dev

在Java中显示矩阵中的灰度图像

来自分类Dev

numpy图像中灰度值的直方图

来自分类Dev

在R中显示.mat格式的灰度图像

来自分类Dev

在MATLAB中从灰度图像进行圆检测

来自分类Dev

python中RGB图像的平均灰度

来自分类Dev

SDL2中的灰度图像

来自分类Dev

在python matplotlib中绘制白色灰度图像

来自分类Dev

在MATLAB中从灰度图像进行圆检测

来自分类Dev

SDL2中的灰度图像

来自分类Dev

在OpenCV 2中将彩色图像与灰度图像混合

来自分类Dev

图像导出在opencv中返回灰度图像

来自分类Dev

在OpenCV 2中将彩色图像与灰度图像混合

来自分类Dev

如何在Matlab中实现灰度形态学检测灰度图像上的圆形物体?

来自分类Dev

检测灰度图像中的简单曲线和线条

来自分类Dev

在Matlab中为灰度图像添加彩色像素

来自分类Dev

在Julia中获取灰度图像的2D直方图

来自分类Dev

在openCV中访问某些像素的强度值(灰度图像)

来自分类Dev

结合背景混合模式和图像中的灰度

来自分类Dev

在MATLAB中为8位灰度图像着色

来自分类Dev

使用javascript从图像中删除灰度css过滤器

来自分类Dev

在python中从灰度热图创建多色阈值图像

来自分类Dev

Python保存并读取二维数组中的灰度图像?