I have this code:
<?php
// EXAMPLE PICTURE
$url='https://admin2.e-hjemmeside.dk/upload/images/89.jpg';
//var_dump(getColorPallet($url));
echoColors(getColorPallet($url));
function echoColors($pallet){ // OUTPUT COLORSBAR
foreach ($pallet as $key=>$val)
echo '<div style="display:inline-block;width:50px;height:20px;background:#'.$val.'"> </div>';
}
function getColorPallet($imageURL, $palletSize=[3,3]){ // GET PALLET FROM IMAGE PLAY WITH INPUT PALLET SIZE
// SIMPLE CHECK INPUT VALUES
if(!$imageURL) return false;
// IN THIS EXEMPLE WE CREATE PALLET FROM JPG IMAGE
$img = imagecreatefromjpeg($imageURL);
// SCALE DOWN IMAGE
$imgSizes=getimagesize($imageURL);
$resizedImg=imagecreatetruecolor($palletSize[0],$palletSize[1]);
imagecopyresized($resizedImg, $img , 0, 0 , 0, 0, $palletSize[0], $palletSize[1], $imgSizes[0], $imgSizes[1]);
imagedestroy($img);
//CHECK IMAGE
/*header("Content-type: image/png");
imagepng($resizedImg);
die();*/
//GET COLORS IN ARRAY
$colors=[];
for($i=0;$i<$palletSize[1];$i++)
for($j=0;$j<$palletSize[0];$j++)
$colors[]=dechex(imagecolorat($resizedImg,$j,$i));
imagedestroy($resizedImg);
//REMOVE DUPLICATES
$colors= array_unique($colors);
return $colors;
}
?>
from this question Detect main colors in an image with PHP
I want to set a value inside the function, like
$colorsinimage = "".$colorsinimage."#".$val."";
to store all the colors in the image as a string. This string can be used outside the function to store into database, echo the string, sort the colors ...
How do I do that?
Thanks in advance :-)
EDIT
Thanks for your comments :-) The link to question .../16959576/.. was very helpful to understand it all. After that I find $GLOBALS og it seems to work in a way. If I ad $GLOBALS['imagecolors'] = ""; first in the code, and $GLOBALS['imagecolors'] = "".$GLOBALS['imagecolors']."#".$val.""; in the first function, I end up to echo $imagecolors; at the end, where the result is the latest color #291a17. Instead of the latest color, I want to set $GLOBALS['imagecolors'] to a string with all the colors, an array of all the different values of $val.
New code with the $GLOBALS:
<?php
$GLOBALS['imagecolors'] = "";
// EXAMPLE PICTURE
$url='https://admin2.e-hjemmeside.dk/upload/images/89.jpg';
//var_dump(getColorPallet($url));
echoColors(getColorPallet($url));
function echoColors($pallet){ // OUTPUT COLORSBAR
foreach ($pallet as $key=>$val)
echo '<div style="display:inline-block;width:50px;height:20px;background:#'.$val.'"> </div>';
$GLOBALS['imagecolors'] = "".$GLOBALS['imagecolors']."#".$val."";
}
function getColorPallet($imageURL, $palletSize=[3,3]){ // GET PALLET FROM IMAGE PLAY WITH INPUT PALLET SIZE
// SIMPLE CHECK INPUT VALUES
if(!$imageURL) return false;
// IN THIS EXEMPLE WE CREATE PALLET FROM JPG IMAGE
$img = imagecreatefromjpeg($imageURL);
// SCALE DOWN IMAGE
$imgSizes=getimagesize($imageURL);
$resizedImg=imagecreatetruecolor($palletSize[0],$palletSize[1]);
imagecopyresized($resizedImg, $img , 0, 0 , 0, 0, $palletSize[0], $palletSize[1], $imgSizes[0], $imgSizes[1]);
imagedestroy($img);
//CHECK IMAGE
/*header("Content-type: image/png");
imagepng($resizedImg);
die();*/
//GET COLORS IN ARRAY
$colors=[];
for($i=0;$i<$palletSize[1];$i++)
for($j=0;$j<$palletSize[0];$j++)
$colors[]=dechex(imagecolorat($resizedImg,$j,$i));
imagedestroy($resizedImg);
//REMOVE DUPLICATES
$colors= array_unique($colors);
return $colors;
}
echo $imagecolors;
?>
Thanks Alex - it is working perfect :-)
Right code
<?php
// EXAMPLE PICTURE
$url='https://admin2.e-hjemmeside.dk/upload/images/89.jpg';
//var_dump(getColorPallet($url));
echoColors(getColorPallet($url));
function echoColors($pallet){
global $imagecolors;
$imagecolors = '';
foreach ($pallet as $key=>$val) {
echo '<div style="display:inline-block;width:50px;height:20px;background:#'.$val.'"> </div>';
$imagecolors .= "#".$val;
}
}
function getColorPallet($imageURL, $palletSize=[3,3]){ // GET PALLET FROM IMAGE PLAY WITH INPUT PALLET SIZE
// SIMPLE CHECK INPUT VALUES
if(!$imageURL) return false;
// IN THIS EXEMPLE WE CREATE PALLET FROM JPG IMAGE
$img = imagecreatefromjpeg($imageURL);
// SCALE DOWN IMAGE
$imgSizes=getimagesize($imageURL);
$resizedImg=imagecreatetruecolor($palletSize[0],$palletSize[1]);
imagecopyresized($resizedImg, $img , 0, 0 , 0, 0, $palletSize[0], $palletSize[1], $imgSizes[0], $imgSizes[1]);
imagedestroy($img);
//CHECK IMAGE
/*header("Content-type: image/png");
imagepng($resizedImg);
die();*/
//GET COLORS IN ARRAY
$colors=[];
for($i=0;$i<$palletSize[1];$i++)
for($j=0;$j<$palletSize[0];$j++)
$colors[]=dechex(imagecolorat($resizedImg,$j,$i));
imagedestroy($resizedImg);
//REMOVE DUPLICATES
$colors= array_unique($colors);
return $colors;
}
echo $imagecolors;
?>