If you want to create color picker from image in javascript you probably will use canvas, but what if you need it work in IE as I needed. You can use some server side help to fetch pixels data from the server. I use php for that and GD library. The code is below.
Server side code that return json pixel data
<?php
function rgb($color) {
$result[] = ($color >> 16) & 0xFF;
$result[] = ($color >> 8) & 0xFF;
$result[] = $color & 0xFF;
return $result;
}
function imagecreatefrom($filename) {
$path = pathinfo($filename);
switch($path['extension']) {
case 'png':
return imagecreatefrompng($filename);
case 'jpg':
return imagecreatefromjpeg($filename);
case 'gif':
return imagecreatefromgif($filename);
default:
return null;
}
}
function getImageData($filename) {
list($width, $height) = getimagesize($filename);
$image = imagecreatefrom($filename);
$image_data = array();
for ($y = 0; $y < $height; ++$y) {
$row = array();
for ($x = 0; $x < $width; ++$x) {
$row[] = rgb(imagecolorat($image, $x, $y));
}
$image_data[] = $row;
}
return $image_data;
}
if (isset($_GET['filename'])) {
$filename = $_GET['filename'];
if (file_exists($filename)) {
$result = array(
'error' => null,
'result' => getImageData($filename)
);
} else {
$result = array(
'error' => "The file '$filename' don't exist",
'result' => null
);
}
} else {
$result = array(
'error' => "You need to put filename",
'result' => null
);
}
header('Content-Type: application/json');
echo json_encode($result);
?>
Then you can fetch the data using ajax and add get invidial pixels on mousemove
var img = $('img');
$.getJSON('image_data.php', {filename: img.attr('src')}, function(data) {
if (data.error) {
alert(data.error);
} else {
$('.eyedropper').click(function() {
picker = true;
return false;
});
img.mousemove(function(e) {
if (picker) {
var x = Math.round(e.pageX - offset.left);
var y = Math.round(e.pageY - offset.top);
if (x >= 0) {
$('.color').css('background-color',
'rgb('+data.result[y][x].join(',')+')');
}
}
}).click(function(e) {
picker = false;
});
}
});
Now all you need to have is element with class eyedropper like a link in your html:
<a href="#" class="eyedropper">pick the color</a>


#1 by boudj on February 21, 2013 - 19:31
could you comment the javascript file?
for example I tried this but it’s not working :
Thank you :)
#2 by jcubic on March 11, 2013 - 11:54
you need to have element with class “eyedropper” like a link that will activate the color picker.
#3 by boudj on February 21, 2013 - 19:33
Here my code
[img id="img" name="filename" class="eyedropper" src="Penguins.jpg"}
[div style="width:100px;height:100px;border:1px #000 solid" class="color" ][/div]