我需要動態地使用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