Yakın önceden tanımlanmış renk RGB

0 Cevap php

Edit:

Verilen cevap ben bu fonksiyonu yaptı

function grabclosestcolor($r, $g, $b){
    $colors = array(array(124,12,12),array(7,7,11),array(110,224,219),array(123,123,123),array(124,177,74),array(130,86,53),array(77,77,77),array(164,124,68),array(204,196,132),array(164,148,147),array(163,123,67),array(26,122,26), array(195,195,50),array(193,193,193),array(255,248,73),array(243,243,243));
    $differencearray = array();
    foreach ($colors as $value) {
    $difference = sqrt(pow($r-$value[0],2)+pow($g-$value[1],2)+pow($b-$value[2],2));
    array_push($differencearray, $difference);
    $smallest = min($differencearray);
    $key = array_search($smallest, $differencearray);
    return $colors[$key];
    }
    }


My goal is this. I grab a picture and loop threw each pixel and grab its x,y, and rgb.

Instead of just grabbing the rgb, I have a predefined array and im looking for the closest match from the color I grabbed to the predefined array. The goal here is to only use colors from the predefined array. Here is my array of colors.

$colors = array(array(124,12,12),array(7,7,11),array(110,224,219),array(123,123,123),array(124,177,74),array(130,86,53),array(77,77,77),array(164,124,68),array(204,196,132),array(164,148,147),array(163,123,67),array(26,122,26), array(195,195,50),array(193,193,193),array(255,248,73),array(243,243,243));

ve burada bunun bütün attı döngüler benim mevcut kodudur.

    $int = imagesx($im) - 1;
$int2 = imagesy($im) - 1;
$start2 = 0;
do{
$start = 0;
do{
$rgb = imagecolorat($im, $start, $start2);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$value = rgb2hex($r,$g,$b).":$start:$start2";
array_push($colorsofimage, $value);

}while($int > $start++);
}while($int2 > $start2++);

rgb2hex bir Kullanıcı Tanımlı Fonksiyon, ama ne başarmak istiyorum yakın renk kapmak için fonksiyonu ile bu işlevini değiştirmek için olduğunu.

$colorsofimage contains an array of each pixels info with hex:x:y what i want it to be is rgb2hex(NEWFUNCTION($r,$g,$b)); So that the new hex is the 1 out of the predefined array.

Ben bir renk algoritma bilmiyorum, çünkü bunu yapmak için nasıl hiçbir ipucu var çünkü, anladığınızı umuyorum.

0 Cevap