在我的Flutter应用程序中,我有一个图像和三个滑块,一个用于Hue,一个用于Saturation,一个用于Brightness,我试图弄清楚如何使用ColorFiltered
小部件进行这些调整,但我不知道该为ColorFilter.matrix
放什么。
我的代码看起来像这样:
ColorFiltered(
colorFilter: ColorFilter.matrix(
// What goes here?
),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(myImageUrl),
)
)
)
)
字符串
有人知道如何根据HSV值生成滤色器矩阵吗?
4条答案
按热度按时间wlp8pajw1#
为了解决这个问题,我构建了一个
ImageFilter
小部件,可以这样使用:字符串
它以-1和1之间的十进制形式输入百分比。
它使用ColorFiltered小部件的3个层:
型
为了生成过滤器矩阵,我使用了这个答案的帮助,为android:https://stackoverflow.com/a/7917978/937841创建了一个在flutter中工作的
ColorFilterGenerator
:型
我敢打赌,有一种方法可以连接色调/饱和度/亮度矩阵(就像我上面提到的android问题中所做的那样),并且只使用1个颜色过滤矩阵(这可能更有效),但这对我的情况有效。
hi3rlvi22#
我已经把BananaNeil的答案添加到Themed package中了。
使用提供的
ChangeColors
小部件来更改任何小部件的亮度,饱和度和色调,包括图像,如下所示:字符串
参数为:
亮度
-1
最暗)。1
是最大值,但您可以超过它)。0.0
没有变化。饱和度
-1
是灰度)。1
是最大值,但您可以超过它)。0.0
没有变化。hue
-1.0
到1.0
(注意:1.0
Package 到-1.0
中,例如1.2
与-0.8
相同)。0.0
不变。加上或减去2.0
的倍数也保持不变。请注意:
ChangeColors
小部件与BananaNeil的答案不同的是,该小部件是一个正确的StatelessWidget
,代码是null-safe的,它修复了饱和度的限制,这样你就不会得到奇怪的效果,并且添加了解释参数的文档。如果你不想添加包,只需复制GitHub的代码。hkmswyz63#
我们必须在其中包含颜色矩阵。一些示例如下:
字符串
只要复制上面的矩阵得到一个深褐色或灰度过滤器。
iih3973s4#
我进一步调整了BananaNeil和Marcelo Glasberg的答案,将3个矩阵合并为1个矩阵,同时还添加了对调整儿童对比度的支持,从而提高了表现。
字符串
它是Stevia封装的一部分。
或者,如果您不想添加软件包,可以复制source code。