mirror of
https://github.com/janishutz/color-thief.git
synced 2025-11-25 05:44:24 +00:00
42
async.html
Executable file
42
async.html
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html class="no-js" lang="en">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<script src="examples/js/jquery.js"></script>
|
||||||
|
<script src="src/color-thief.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div class="container">
|
||||||
|
<div id="samedomain">
|
||||||
|
<img src="examples/img/photo1.jpg" width="400" height="200">
|
||||||
|
<h1>Same domain, image by url</h1>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var colorThief = new ColorThief();
|
||||||
|
colorSync = colorThief.getColorFromUrl("examples/img/photo1.jpg", function(color){
|
||||||
|
$('#samedomain').css('background-color','rgb('+color[0]+','+color[1]+','+color[2]+')')
|
||||||
|
console.log('url',color)
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<div id="crossdomain">
|
||||||
|
<img width="400" height="200">
|
||||||
|
<h1>Cross-domain, image by url</h1>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
colorThief.getColorAsync("http://lorempixel.com/400/200/",function(color, element){
|
||||||
|
$('#crossdomain').css('background-color','rgb('+color[0]+','+color[1]+','+color[2]+')')
|
||||||
|
$('#crossdomain img').attr('src',element.src)
|
||||||
|
console.log('async', color, element.src)
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -138,6 +138,50 @@ ColorThief.prototype.getPalette = function(sourceImage, colorCount, quality) {
|
|||||||
return palette;
|
return palette;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ColorThief.prototype.getColorFromUrl = function(imageUrl, callback, quality) {
|
||||||
|
sourceImage = document.createElement("img");
|
||||||
|
var thief = this;
|
||||||
|
sourceImage.addEventListener('load' , function(){
|
||||||
|
var palette = thief.getPalette(sourceImage, 5, quality);
|
||||||
|
var dominantColor = palette[0];
|
||||||
|
callback(dominantColor, imageUrl);
|
||||||
|
});
|
||||||
|
sourceImage.src = imageUrl
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ColorThief.prototype.getImageData = function(imageUrl, callback) {
|
||||||
|
xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('GET', imageUrl, true);
|
||||||
|
xhr.responseType = 'arraybuffer'
|
||||||
|
xhr.onload = function(e) {
|
||||||
|
if (this.status == 200) {
|
||||||
|
uInt8Array = new Uint8Array(this.response)
|
||||||
|
i = uInt8Array.length
|
||||||
|
binaryString = new Array(i);
|
||||||
|
for (var i = 0; i < uInt8Array.length; i++){
|
||||||
|
binaryString[i] = String.fromCharCode(uInt8Array[i])
|
||||||
|
}
|
||||||
|
data = binaryString.join('')
|
||||||
|
base64 = window.btoa(data)
|
||||||
|
callback ("data:image/png;base64,"+base64)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send();
|
||||||
|
};
|
||||||
|
|
||||||
|
ColorThief.prototype.getColorAsync = function(imageUrl, callback, quality) {
|
||||||
|
var thief = this;
|
||||||
|
this.getImageData(imageUrl, function(imageData){
|
||||||
|
sourceImage = document.createElement("img");
|
||||||
|
sourceImage.addEventListener('load' , function(){
|
||||||
|
var palette = thief.getPalette(sourceImage, 5, quality);
|
||||||
|
var dominantColor = palette[0];
|
||||||
|
callback(dominantColor, this);
|
||||||
|
});
|
||||||
|
sourceImage.src = imageData;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user