UWP 指定的缓冲区索引不在缓冲区容量内
UWP The specified buffer index is not within the buffer capacity
我在尝试执行此操作时遇到此异常:
var pixels = await bitmap.GetPixelsAsync();
byte[] bytes = pixels.ToArray();
它发生在 pixels.ToArray()
。信息 对我帮助不大。我只知道我的像素的长度和容量都是0,但我不知道为什么以及如何解决。
这段代码的上下文:
public static async Task<string> SaveThumbnail(UIElement image, bool isCurrent)
{
var bitmap = new RenderTargetBitmap();
try
{
await bitmap.RenderAsync(image);
}
catch (ArgumentException)
{
return "";
}
var pixels = await bitmap.GetPixelsAsync();
byte[] bytes = pixels.ToArray();
// some other code
}
这里调用了这个函数:
public static async Task<Brush> GetThumbnailMainColor(UIElement image, bool isCurrent)
{
var filename = await SaveThumbnail(image, isCurrent);
var file = await ThumbnailFolder.GetFileAsync(filename);
return await ColorHelper.GetThumbnailMainColor(file);
}
它在这里被调用:
thumbnail.Source = thumbnails.Count == 0 ? Helper.DefaultAlbumCover : thumbnails[random.Next(thumbnails.Count)];
grid.Background = await Helper.GetThumbnailMainColor(thumbnail, false);
我在调用之前设置了 Image
源,我很确定我可以看到缩略图显示的图像。那么为什么我会得到 0 容量像素?
可能是你设置了缩略图的来源后渲染RenderTargetBitmap
太快了(是Image控件吗?),图片还没有渲染到界面上,导致你获取不到图片在 Image
.
里面
试试这个:
thumbnail.Source = thumbnails.Count == 0 ? Helper.DefaultAlbumCover : thumbnails[random.Next(thumbnails.Count)];
thumbnail.Loaded += async (_s,_e) =>
{
grid.Background = await Helper.GetThumbnailMainColor(thumbnail, false);
}
此致。
我在尝试执行此操作时遇到此异常:
var pixels = await bitmap.GetPixelsAsync();
byte[] bytes = pixels.ToArray();
它发生在 pixels.ToArray()
。信息
这段代码的上下文:
public static async Task<string> SaveThumbnail(UIElement image, bool isCurrent)
{
var bitmap = new RenderTargetBitmap();
try
{
await bitmap.RenderAsync(image);
}
catch (ArgumentException)
{
return "";
}
var pixels = await bitmap.GetPixelsAsync();
byte[] bytes = pixels.ToArray();
// some other code
}
这里调用了这个函数:
public static async Task<Brush> GetThumbnailMainColor(UIElement image, bool isCurrent)
{
var filename = await SaveThumbnail(image, isCurrent);
var file = await ThumbnailFolder.GetFileAsync(filename);
return await ColorHelper.GetThumbnailMainColor(file);
}
它在这里被调用:
thumbnail.Source = thumbnails.Count == 0 ? Helper.DefaultAlbumCover : thumbnails[random.Next(thumbnails.Count)];
grid.Background = await Helper.GetThumbnailMainColor(thumbnail, false);
我在调用之前设置了 Image
源,我很确定我可以看到缩略图显示的图像。那么为什么我会得到 0 容量像素?
可能是你设置了缩略图的来源后渲染RenderTargetBitmap
太快了(是Image控件吗?),图片还没有渲染到界面上,导致你获取不到图片在 Image
.
试试这个:
thumbnail.Source = thumbnails.Count == 0 ? Helper.DefaultAlbumCover : thumbnails[random.Next(thumbnails.Count)];
thumbnail.Loaded += async (_s,_e) =>
{
grid.Background = await Helper.GetThumbnailMainColor(thumbnail, false);
}
此致。