如何在Flutter中调整图片的亮度并直接应用到文件中?

问题描述 投票:0回答:1

我正在开发一个 Flutter 应用程序,其中有一个滑块可以调整图像的亮度。我想将用户可以在屏幕上看到的亮度调整直接应用于图像文件。

ColorFiltered(
          colorFilter: ColorFilter.matrix(
            ColorFilterGenerator.brightnessAdjustMatrix(
                value: _sliderBrightnessValue),
          ),
          child: Image.file(
            File(widget.imagePath),
            fit: BoxFit.cover,
          ),
        ),

我对图像处理不太了解,但我发现这个矩阵与滑块配合得很好:

class ColorFilterGenerator {
  static List<double> brightnessAdjustMatrix({required double value}) {
    value = (value <= 0) ? value * 255 : value * 100;
    return (value == 0) 
      ? [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]
      : [1, 0, 0, 0, value, 0, 1, 0, 0, value, 0, 0, 1, 0, value, 0, 0, 0, 1, 0];
  }
}

滑块:

Slider(
              value: _sliderBrightnessValue,
              min: -0.5,
              max: 2,
              onChanged: (double value) {
                setState(() {
                  _sliderBrightnessValue = value;
                });
              },
            ),

所以我相信要转换文件本身,我需要使用图像包中的 adjustColor() ,但我不知道如何在调用 adjustmentColor() 时转换滑块值以获得类似的结果。 目前我有这个:

Top = adjustmentColor()的结果

底部 = 颜色过滤

项目回购

flutter dart image-processing
1个回答
0
投票

如果需要,您可以尝试这个包:https://pub.dev/packages/simple_fx 如果你想从头开始制作它,你可以深入研究这个包的源代码并从代码中获得灵感。

© www.soinside.com 2019 - 2024. All rights reserved.