php平均彩色图像png jpg

时间:2014-01-24 16:38:38

标签: php image colors resources

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

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

我尝试通过1px将图像调整为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);

我知道它来自我的图片var但我不知道如何解决它...

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我知道了,这是我的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;