Flutter 如何从dart中表示图像的无符号8字节整数列表计算亮度?

Flutter 如何从dart中表示图像的无符号8字节整数列表计算亮度?,flutter,dart,rasterizing,Flutter,Dart,Rasterizing,我想计算UintList图像的亮度。我使用的图像是从我的手机中挑选出来的(使用flatter中的image_picker插件)。我在列表的每个值上都尝试了for循环,并执行了以下操作: int r=0,b=0,g=0,count=0; for(imageBytesList中的int值){ ///此颜色的红色通道为8位值。 int red=(0x00ff0000&value)>>16; ///此颜色的蓝色通道为8位值。 蓝色整数=(0x0000ff00&value)>>8; ///此颜色的绿色通道

我想计算UintList图像的亮度。我使用的图像是从我的手机中挑选出来的(使用flatter中的image_picker插件)。我在列表的每个值上都尝试了for循环,并执行了以下操作:

int r=0,b=0,g=0,count=0;
for(imageBytesList中的int值){
///此颜色的红色通道为8位值。
int red=(0x00ff0000&value)>>16;
///此颜色的蓝色通道为8位值。
蓝色整数=(0x0000ff00&value)>>8;
///此颜色的绿色通道为8位值。
绿色整数=(0x000000ff&value)>>0;
r+=红色;
b+=蓝色;
g+=绿色;
计数++;
}
双结果=(r+b+g)/(计数*3);
我知道结果应该表示介于0和255之间的亮度级别,其中0=全黑,255=全亮。但是,我得到的是非常奇怪的值,比如0.0016887266175341332。我犯了什么计算错误?(我知道我的方法大错特错,但我找不到办法)


颤振图像小部件使用
image.memory()
constructor将此UINT8列表从内存转换为具有正确高度和宽度的图像。它背后的逻辑是什么?

您使用的不是ARBG值,而是编码数据(png、jpg等)-您需要先将其转换为原始像素列表-您可以尝试一下,例如,是否有一个指南/参考,我可以从中了解如何转换编码数据(从不同格式)我已经检查了flatter的image类和dart:ui的image类。没有提供转换为像素或中提到的任何内容的方法。本文档所指的是什么?请阅读第二段:“像素以32位无符号整数的#AARRGGBB格式存储。”您使用的不是ARBG值,而是编码数据(png、jpg等)-您需要首先将其转换为原始像素列表-您可以尝试,例如,是否有一个指南/参考,我可以从中了解如何将编码数据(从不同格式)转换为原始像素?我已经检查了Flatter的图像类和dart:ui的图像类。没有提供转换为像素或中提到的任何内容的方法。本文档所指的是什么?请阅读第二段:“像素以32位无符号整数的形式存储,格式为#AARGGBB。”