public ColorF Transform(ColorTransformerContext context, ColorF color) { var r = (float)Math.Pow(color.R, _gammaR); var g = (float)Math.Pow(color.G, _gammaG); var b = (float)Math.Pow(color.B, _gammaB); return(ColorF.FromRgb(r, g, b)); }
public ColorF GetAverageColor(Bitmap bitmap) { int bitmapWidth = bitmap.Width; int bitmapHeight = bitmap.Height; int bytesPerPixel; PixelFormat pixelFormat = bitmap.PixelFormat; switch (pixelFormat) { case PixelFormat.Format24bppRgb: bytesPerPixel = 3; break; case PixelFormat.Format32bppRgb: case PixelFormat.Format32bppArgb: bytesPerPixel = 4; break; default: throw new ArgumentOutOfRangeException(); } var i = 0; ulong rValues = 0; ulong gValues = 0; ulong bValues = 0; BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmapWidth, bitmapHeight), ImageLockMode.ReadOnly, pixelFormat); int stride = bitmapData.Stride; unsafe { var data = (byte *)bitmapData.Scan0; for (var y = 0; y < bitmapHeight; y += 1 + _skipColumns) { int lineIndex = y * stride; for (var x = 0; x < bitmapWidth; x += 1 + _skipRows) { int pixelIndex = lineIndex + x * bytesPerPixel; rValues += data[pixelIndex + 2]; gValues += data[pixelIndex + 1]; bValues += data[pixelIndex]; i++; } } } bitmap.UnlockBits(bitmapData); return(ColorF.FromRgb(((float)rValues / i) / 255f, ((float)gValues / i) / 255f, ((float)bValues / i) / 255f)); }
public ColorF Transform(ColorTransformerContext context, ColorF color) { float brightness = color.GetBrightness(); if (brightness > (1f - _threshold)) { return(ColorF.FromRgb(1f, 1f, 1f)); } if (brightness < _threshold) { return(ColorF.FromRgb(0f, 0f, 0f)); } return(color); }
public ColorF Transform(ColorTransformerContext context, ColorF color) { ColorF lastColor = context.PreviousOutputColor; float diffR = color.R - lastColor.R; float r = lastColor.R; if (diffR > _hysteresis) { r += diffR - _hysteresis; } if (diffR < -_hysteresis) { r += diffR + _hysteresis; } float diffG = color.G - lastColor.G; float g = lastColor.G; if (diffG > _hysteresis) { g += diffG - _hysteresis; } if (diffG < -_hysteresis) { g += diffG + _hysteresis; } float diffB = color.B - lastColor.B; float b = lastColor.B; if (diffB > _hysteresis) { b += diffB - _hysteresis; } if (diffB < -_hysteresis) { b += diffB + _hysteresis; } return(ColorF.FromRgb(r, g, b)); }
public ColorF GetAverageColor(Bitmap bitmap) { _graphics.DrawImage(bitmap, new Rectangle(0, 0, _bitmapWidth, _bitmapHeight), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel); var colors = new List <Color>(); for (var y = 0; y < _bitmapHeight; y++) { for (var x = 0; x < _bitmapWidth; x++) { colors.Add(_bitmap.GetPixel(x, y)); } } var averageR = (float)colors.Average(x => x.R); var averageG = (float)colors.Average(x => x.G); var averageB = (float)colors.Average(x => x.B); return(ColorF.FromRgb(averageR / 255f, averageG / 255f, averageB / 255f)); }
public ColorF Transform(ColorTransformerContext context, ColorF color) { return(ColorF.FromRgb(color.R * _factorR, color.G * _factorG, color.B * _factorB)); }
public Material() { Ambient = ColorF.FromRgb(0x080808); Diffuse = ColorF.FromRgb(0xFFFFFF); }