php灰度化,php – 在Silverstripe中制作灰度图像

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

_config.php

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

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

Image:

extensions:

- 'Greyscaled'

Greyscaled.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的更新版本?您可以传递2个以上的参数,GD已重命名为Image_Backend.这样,图像名称中的RGB值之间就没有空格.请注意$gd-> greyscale需要很多果汁 – 所以你可能会先缩小尺寸,然后再使用GreyscaleImage.

更新3:由于这个答案最近获得了一些投票,我认为人们仍在使用它,但我认为在2017年CSS过滤器在许多情况下是更好的选择.有前缀你将有近90%的覆盖率.

css-filters on caniuse.com

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);

}

}

并在模板中:

$Images.Title

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值