我试图改变Flash中图像的亮度。我已经将闪光灯转换为位图,并希望制作一个可以增加或减少整个图像亮度的按钮。有没有办法一次访问图像中的每个像素(使用代码,而不是舞台上的面板)?
答案 0 :(得分:1)
使用ColorMatrixFilter
类,您可以通过对每个颜色通道应用相同的乘数来调整亮度。
这样的事情(来自这个source):
image.filters = [makeBrightFilter(50)];
function makeBrightFilter(amount):ColorMatrixFilter {
amount = amount * (255/250);
var m:Array = new Array();
m = m.concat([1, 0, 0, 0, amount]); // red
m = m.concat([0, 1, 0, 0, amount]); // green
m = m.concat([0, 0, 1, 0, amount]); // blue
m = m.concat([0, 0, 0, 1, 0]); // alpha
return new ColorMatrixFilter(m);
}
要将其抽象出来并使其更加轻松,您可以使用像Grant Skinner's ColorMatrix class这样的库。
然后你做这样的事情:
import com.gskinner.geom.ColorMatrix;
import flash.filters.ColorMatrixFilter;
var matrix:ColorMatrix = new ColorMatrix();
matrix.adjustBrightness(50);
image.filters = [new ColorMatrixFilter(matrix)];