brightness.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import 'dart:typed_data';
  2. import 'base.dart';
  3. /// Vid亮度处理器
  4. class VidBrightnessProcessor extends VidFrameProcessor {
  5. VidBrightnessProcessor(this.brightness) {
  6. _setActualBrightness();
  7. }
  8. /// 亮度 [-255~255]
  9. final int brightness;
  10. late final int _actualBrightness;
  11. void _setActualBrightness() {
  12. if (brightness < -255) {
  13. _actualBrightness = -255;
  14. } else if (brightness > 255) {
  15. _actualBrightness = 255;
  16. } else {
  17. _actualBrightness = brightness;
  18. }
  19. }
  20. @override
  21. Uint8List process(Uint8List bytes, int position) {
  22. final i = position;
  23. final _brightness = _actualBrightness;
  24. int b = bytes[i];
  25. int g = bytes[i + 1];
  26. int r = bytes[i + 2];
  27. b += _brightness;
  28. g += _brightness;
  29. r += _brightness;
  30. if (b < 0) b = 0;
  31. if (b > 255) b = 255;
  32. if (g < 0) g = 0;
  33. if (g > 255) g = 255;
  34. if (r < 0) r = 0;
  35. if (r > 255) r = 255;
  36. bytes[i] = b;
  37. bytes[i + 1] = g;
  38. bytes[i + 2] = r;
  39. return bytes;
  40. }
  41. @override
  42. String toString() => 'VidBrightnessProcessor: $brightness';
  43. }