如何使用UWP彩色小偷

时间:2017-03-16 16:16:23

标签: c# colors uwp color-thief

我从互联网上加载图像来源,我需要这个图像的主色。例如this图像,然后发现颜色小偷,但我无法理解。

我使用这种方法,但我认为这是错误的。

BitmapDecoder BMD = new BitmapDecoder("https://yt3.ggpht.com/-cYK4gMKhvV0/AAAAAAAAAAI/AAAAAAAAAAA/8znlvBw-Wos/s100-c-k-no-mo-rj-c0xffffff/photo.jpg");
var colorThief = new ColorThief();
await colorThief.GetColor(BMD);

我该怎么做?

1 个答案:

答案 0 :(得分:1)

ColorThiefGetColor方法需要BitmapDecoder参数是正确的。但BitmapDecode并非由您尝试的方式创建。 IRandomAccessStream可以根据CreateAsync()方法创建BitmapDecoder,不能由Uri直接创建。所以你首先需要一个RandomAccessStream对象。这可以通过RandomAccessStreamReference.CreateFromUri(Uri)创建RandomAccessStreamReference,然后打开并阅读它来完成。使用ColorThief的完整演示如下,您可以参考:

Uri imageUri = new Uri("https://yt3.ggpht.com/-cYK4gMKhvV0/AAAAAAAAAAI/AAAAAAAAAAA/8znlvBw-Wos/s100-c-k-no-mo-rj-c0xffffff/photo.jpg");
RandomAccessStreamReference random = RandomAccessStreamReference.CreateFromUri(imageUri);
using (IRandomAccessStream stream = await random.OpenReadAsync())   
{
    //Create a decoder for the image
    var decoder = await BitmapDecoder.CreateAsync(stream);
    var colorThief = new ColorThief();
    var color = await colorThief.GetColor(decoder);       
}