【发布时间】:2019-01-10 14:49:07
【问题描述】:
有人知道在 UWP 运行时调整图像亮度的更有效方法吗?
我发现this question 运行良好,但运行速度非常慢。 但是,我在网上找不到任何说明存在替代方法的文档。
这是我有问题的代码。
// TODO Make Image Brightness Slider quicker and more intuitive.
private WriteableBitmap ChangeBrightness(WriteableBitmap source, int increment)
{
var dest = new WriteableBitmap(source.PixelWidth, source.PixelHeight);
byte[] color = new byte[4];
using (var srcBuffer = source.PixelBuffer.AsStream())
using (var dstBuffer = dest.PixelBuffer.AsStream())
{
while (srcBuffer.Read(color, 0, 4) > 0)
{
for (int i = 0; i < 3; i++)
{
var value = (float)color[i];
var alpha = color[3] / (float)255;
value /= alpha;
value += increment;
value *= alpha;
if (value > 255)
{
value = 255;
}
color[i] = (byte)value;
}
dstBuffer.Write(color, 0, 4);
}
}
return dest;
}
【问题讨论】:
-
你也可以使用像ImageProcessor这样的库。或者查看adjusting brightness的源码
-
@LennartStoop 该特定库不适用于 UWP 应用。我正在查看其他几个库,所以如果我找到一个符合要求的库,我会报告。
-
@IshaanJavali 这不是重复的,因为它们是两种不同的技术,并且该问题中提供的答案不适用于 UWP。
-
抱歉,我错过了 UWP 部分。所以没有
System.Drawing给你..你看过Win2D吗?根据文档,它可以处理adjusting brightness。不过我没有这方面的经验
标签: c# uwp writeablebitmap