我需要动态地使用ActionScript 3.0为灰度渐变位图着色。渐变从白到黑,最深的颜色必须是0xFF0000,最轻的是0xFFFFFF。尝试调色板图和ColorMatrixFilter混合结果并没有稳定的解决方案。着色灰度图像as3
2
A
回答
1
通过在红色通道上构建一个具有255偏移量的矩阵(除此之外是一个单位矩阵),可能对ColorMatrixFilter非常有用。
此示例文档类假定FLA库中有一个720×480的输出符号“GradientBMD”这是一个flash.display.BitmapData子类:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.filters.*;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var matrix:Array = new Array();
matrix = matrix.concat([1,0,0,0,255]);
matrix = matrix.concat([0,1,0,0,0]);
matrix = matrix.concat([0,0,1,0,0]);
matrix = matrix.concat([0,0,0,1,0]);
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
bmd.applyFilter(bmd, bmd.rect, new Point(0,0), colorFilter);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
}
}
}
您还可以创建充满颜色的新位图数据你想要的梯度递减至(代替黑色),并将其复制到您的梯度BlendMode.ADD:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.geom.Point;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
var bmd2:BitmapData = new BitmapData(720, 480, false, 0xFF0000);
bmd.draw(bmd2, null, null, BlendMode.ADD, bmd.rect,false);
}
}
}
1
除了使用的ColorMatrixFilter(在另一个答案所述),你也可以使用的的BlendMode = “亮度”选项也是如此。
我对在ActionScript灰度图像一篇博客文章中,这可能有助于: http://flexdevtips.blogspot.com/2011/01/grayscale-images-progressbar-rating.html
2
var color:uint = 0xFF0000;
var r:uint = (color >> 16) & 0xFF;
var g:uint = (color >> 8) & 0xFF;
var b:uint = color & 0xFF;
var n:Number = 1/3;
var matrix:Array = new Array();
matrix = matrix.concat([n,n,n,0,r]);
matrix = matrix.concat([n,n,n,0,g]);
matrix = matrix.concat([n,n,n,0,b]);
matrix = matrix.concat([0,0,0,1,0]);
_bitmapData.applyFilter(_bitmapData, _bitmapData.rect, new Point(), new ColorMatrixFilter(matrix));'
相关问题
- 1. 着色灰度图像
- 2. CSS - 着色灰度图像
- 3. 着色灰度图像
- 4. 着色灰度16位图像
- 5. 什么字着色灰度位图
- 6. 绘图着色点上的灰度(B/W)图像
- 7. 彩色图像灰度图像在Firefox
- 8. OpenCV:将灰度图像着色的直接方法
- 9. 在MATLAB中着色8位灰度图像
- 10. 如何着色Python中的3D灰度图像
- 11. 着色16位灰度垫只产生图像的一半
- 12. 灰度图像单色尺度?
- 13. 我需要将图像转换为灰度,然后将灰度范围着色为新颜色
- 14. 灰度图像
- 15. AS3灰色精灵?
- 16. 灰色UIImage - 灰色IP图像转换
- 17. 灰度图像上的颜色
- 18. 将彩色图像转换为灰度
- 19. 彩色在Winforms灰度图像显示
- 20. 将灰度图像转换为彩色
- 21. cvSetImageROI使用灰度和彩色图像
- 22. matplotlib:通过依赖迭代的灰度图着色线图
- 23. 灰度的图像
- 24. 灰度PNG图像
- 25. 图像为16bpp时,从位图获取彩色图像灰度
- 26. AS3单色图像
- 27. 重新着色图像保持亮度
- 28. 真正灰度的彩色图像的理想图像格式
- 29. 方法彩色图像转换为灰度图像
- 30. 彩色图像与Raphael.js灰度图像不工作在I.E. 9
在的ColorMatrixFilter例子,我特别套管它为红色。很明显,您可以通过设置每个通道的偏移量将渐变色调为任意RGBA颜色。我将滤镜解决方案移到了我的响应的顶部,因为如果您将图像着色为纯色,这是最好的方法。如果色彩以某种方式不均匀(即,您有第二个色调位图应用),则可以使用第二种解决方案。 – 2011-05-02 21:34:03
谢谢!由于我处理很多透明胶片ColorMatrix滤镜效果最佳。在下面发布我的最终解决方案 - 适用于彩色和灰度图像。 – 2011-05-03 15:15:08