【问题标题】:Average Image Color in php for png/jpegpng/jpeg 的 php 中的平均图像颜色
【发布时间】:2014-02-15 18:02:16
【问题描述】:

我想在 php 中计算图像(png 或 jpg)的平均颜色。

我想要一个可以快速计算平均颜色的小脚本。

我尝试将图像大小调整为 1px x 1px,但没有成功。我总是有这样的错误:imagesx() expects parameter 1 to be resource, string given in

这是我的 php:

$post_thumb   = wp_get_attachment_url( get_post_thumbnail_id() );   
$img = $post_thumb;
$x = imagesx($img);
$y = imagesy($img);
$tmp_img = ImageCreateTrueColor(1,1);
ImageCopyResampled($tmp_img,$img,0,0,0,0,1,1,$x,$y);
$rgb = ImageColorAt($tmp_img,0,0);

我知道它来自我的图像变量,但我不知道如何解决它...

【问题讨论】:

    标签: php image colors resources


    【解决方案1】:

    我知道了,这是我的 var 对象的问题:

    $img = @imagecreatefromstring(file_get_contents($post_thumb));
    $x = imagesx($img);
    $y = imagesy($img);
    $tmp_img = ImageCreateTrueColor(1,1);
    ImageCopyResampled($tmp_img,$img,0,0,0,0,1,1,$x,$y);
    $rgb = ImageColorAt($tmp_img,0,0);
    $r   = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b  =  $rgb & 0xFF;
    

    【讨论】:

    • 谢谢,你让我不必自己弄清楚这段代码,非常适合我的需要!
    【解决方案2】:

    lolo,这是我用来获取图片平均颜色的函数

    function average($img) 
    {
        $w = imagesx($img);
        $h = imagesy($img);
        $r = $g = $b = 0;
        for($y = 0; $y < $h; $y += 2) {
            for($x = 0; $x < $w; $x++) {
                $rgb = imagecolorat($img, $x, $y);
                $r += $rgb >> 16;
                $g += $rgb >> 8 & 255;
                $b += $rgb & 255;
            }
        }
        $pxls = $w * $h;
        $r = dechex(round($r / $pxls));
        $g = dechex(round($g / $pxls));
        $b = dechex(round($b / $pxls));
        if(strlen($r) < 2) {
            $r = 0 . $r;
        }
        if(strlen($g) < 2) {
            $g = 0 . $g;
        }
        if(strlen($b) < 2) {
            $b = 0 . $b;
        }
        return "#" . $r . $g . $b;
    }
    

    【讨论】:

    • 感谢您的回答,但您的代码出现了与以前完全相同的错误...
    • 你应该尝试检查你给 imagesx() 的参数,看看它是否是一个资源
    • 是否有理由将迭代器$y 增加2 而不是1
    猜你喜欢
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2019-07-24
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多