什么是图片平均色呢?我也不知道它的准确定义,总之看下面这张图就明白了。
算出图片平均色有用么?用来做马赛克拼图的时候肯定会用到。另外,网上也有不少依赖于这个的应用:
那么,怎么能得到图片的平均色呢?这里有煎蛋提供的一个可以完成该功能的软件,这里还有个国外的网站也提供了类似的功能。这些桌面程序或者后端程序的实现不属于这篇文
章的讨论范畴了,用flash在前端同样可以实现,比如说下面这个Demo。
我采用的方法是JK提出的。取到图片后,分别读取图片每一个像素R、G、B三种色值,累加起来再除以图片总像素数,也就是图片宽×高,得到R、G、B的平均值,继而得 到平均颜色。核心的代码在下面:
var imgData:BitmapData = Bitmap(img).bitmapData;
var red:Number = 0, blue:Number = 0, green:Number = 0;
for (var i = 0 ; i < imgData.width; i++ ) {
for (var j = 0 ; j < imgData.height; j++ ) {
var pixel:Pixel = new Pixel(imgData.getPixel32(i, j));
red = pixel.getRed();
green = pixel.getGreen();
blue = pixel.getBlue();
}
}
var area:Number = imgData.width * imgData.height;
var c:ColorTransform = new ColorTransform(1, 1, 1, 1,red/area, green/area , blue/area, 0);///
trace(c.color);
//Pixel
package com {
public class Pixel {
private var value : uint;
public function Pixel(n1:uint) {
value = n1;
}
public function getRed():int {
return (value >> 16) & 0xFF;
}
public function getGreen():int {
return (value >> 8) & 0xFF;
}
public function getBlue():int {
return value & 0xFF;
}
}
}
原理很简单,代码也不多。关键是看应用场景了,用得好的话很容易就起到锦上添花的效果~
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8