如何利用 composer 替换第三方包里的某个类(color-thief-php为例)

一, 修改composer.json

composer require ksubileau/color-thief-php

{
    "require": {
        "ksubileau/color-thief-php": "^1.4"
    },
    //  autoload 加载自定义修改后类 的方法,来替换vendor中的类  的方法,
    //  只修改要改类 的方法,其他 与 vendor中的类一致
    "autoload": {     
        "classmap": [
            "ColorThief/CMap.php"
        ]
    }
}
二,修改原因:color-thief-php只能提取色值不能计算占比呀
1,修改 ColorThief\CMap.php 文件
    public function palette()
    {
        $total = array_sum($this->vboxes->map(function ($x) {
            return $x['vbox']->count();
        }));

        return $this->vboxes->map(function ($vb) use ($total) {
            return array(
               $vb['color'], 
               (int)($vb['vbox']->count() / (float)$total * 100)
            );
        });
    }

    // 注释为原来的代码
    /*public function palette()
    {
        return $this->vboxes->map(function ($vb) {
            return $vb['color'];
        });
    }*/
2,目录结构

在这里插入图片描述

3,使用color-thief-php
composer install
composer dump-autoload
// 图片路径
$tempPicPath = RUNTIME_PATH . 'test.jpg';
 
// 色值top?
$colorCount = 3;
 
// 提取质量1最高
$colorQuality = 1;
 
// 开始提取
$palette = ColorThief::getPalette($tempPicPath, $colorCount, $colorQuality);
        
print_r($palette);

在这里插入图片描述

    // RGB 转为 颜色值(#FF0011)
    function rgbToColor($R, $G = -1, $B = -1)
    {
        if (is_array($R) && sizeof($R) == 3) {
            list($R, $G, $B) = $R;
        }
        $R = intval($R);
        $G = intval($G);
        $B = intval($B);
        $R = dechex($R < 0 ? 0 : ($R > 255 ? 255 : $R));
        $G = dechex($G < 0 ? 0 : ($G > 255 ? 255 : $G));
        $B = dechex($B < 0 ? 0 : ($B > 255 ? 255 : $B));
        $COLOR = (strlen($R) < 2 ? '0' : '') . $R;
        $COLOR .= (strlen($G) < 2 ? '0' : '') . $G;
        $COLOR .= (strlen($B) < 2 ? '0' : '') . $B;
        return '#' . $COLOR;
    }
三,参考:

https://blog.csdn.net/yssong1028/article/details/92829334

https://segmentfault.com/q/1010000007298980

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值