2014-01-24 310 views
1

我想計算在PHP中的圖像(PNG或JPG)的平均顏色。php平均顏色圖像PNG格式

我想要一個快速計算平均顏色的小腳本。

我試過將圖像大小調整爲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); 

我知道它來自我的形象變種,但我不知道如何解決它...

回答

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; 
+0

謝謝,你救了我不得不自己弄清這個代碼,完美地滿足我的需求! – Codemonkey

0

洛洛,這是我的功能使用要有一個頭像

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

謝謝你的回答,但我的代碼已經和以前完全一樣了...... – lolo

+0

你應該試着檢查你給imagesx()的參數,看看它是否是一個資源 – dincan

+0

I解決了我的問題。看到我的答案。 – lolo