我正在开发一个 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()的结果
底部 = 颜色过滤
如果需要,您可以尝试这个包:https://pub.dev/packages/simple_fx 如果你想从头开始制作它,你可以深入研究这个包的源代码并从代码中获得灵感。