我想在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但我不知道如何解决它...
答案 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;