So I have a HTML Color picker and it works really well when you simply click on a color, but say you want to drag around the canvas seeing different colors in real-time, how would you go about that with the following code? I can't seem to wrap my head around it even after studding other color pickers.
Here is the code I am working with:
<canvas style="cursor:crosshair;margin-left: 4px;" width="505" height="301" id="canvas_picker"></canvas><br><br><hr><br>
<div id="hex"><font style="font-family: monospace;" color="#f20000">HEX:</font> <input onclick="this.setSelectionRange(0, this.value.length)" id="hexinput" value="#FFFFFF" type="text" readonly></div>
<div id="color-label" style="background-color: #FFFFFF;"></div><br>
<div id="rgb"><font style="font-family: monospace;" color="#f20000">RGB:</font> <input onclick="this.setSelectionRange(0, this.value.length)" id="rgbinput" value="rgb(255, 255, 255)" type="text" readonly></div>
<script type="text/javascript">
var colorLabel = document.getElementById('color-label');
var canvas = document.getElementById('canvas_picker').getContext('2d');
var img = new Image();
img.src = 'cpb.png';
$(img).load(function(){
canvas.drawImage(img,0,0);
});
function rgbToHex(R,G,B) {
return toHex(R)+toHex(G)+toHex(B)
}
function toHex(n) {
n = parseInt(n,10);
if (isNaN(n)) return "00";
n = Math.max(0,Math.min(n,255));
return "0123456789ABCDEF".charAt((n-n%16)/16) + "0123456789ABCDEF".charAt(n%16);
}
$('#canvas_picker').click(function(event){
var x = event.pageX - this.offsetLeft;
var y = event.pageY - this.offsetTop;
var img_data = canvas.getImageData(x, y, 1, 1).data;
var R = img_data[0];
var G = img_data[1];
var B = img_data[2];
var rgb = 'rgb(' + R + ', ' + G + ', ' + B + ')';
var hex = rgbToHex(R,G,B);
$('#rgb input').val(rgb);
$('#hex input').val('#' + hex);
colorLabel.style.backgroundColor = '#' + hex;
});
</script>