c# - 如何处理溢出(添加颜色)或下溢(减去颜色)
问题描述
我正在尝试编写一个可以从电影胶片(例如 Super8 或 Normal8)中提取图像的应用程序,以便从提取的图像中生成视频。我正在尝试使用 .NET 5.0 和 C# 在 WPF 中做到这一点。一些图像需要颜色校正(更亮、更暗、更清晰等);
.NET 5.0 提供了一个结构 System.Windows.Media.Color,它提供了Add(Color1,Color2)和Subtract(Color1, Color2)方法。如果您在 C# 程序中执行此方法,则可能会出现颜色通道结果,其 argb 值应低于 0 或高于 255。
我预计负结果的值为 0(零),高于 255 的结果为 255。
- - 样本 - - - - - - - - - - - - - - - - - - - - - - - ------------------------------------------
//
// the correction color is defined as a static System.Windows.Media.Color
// e.g.like Color.FromArgb(255, 20, 15, 10);
//
public Color CorrectARGBValues(byte a, byte red, byte green, byte blue)
{
System.Windows.Media.Color aOldColor = Color.FromArgb(a, red, green, blue);
System.Windows.Media.Color aNewColor = Color.Add(aOldColor, aCorrectionColor);
return aNewColor;
}
上述函数似乎无法处理此异常 - 例如,通过插入 0 表示负值或插入 255 表示高于 255 的值。任何人都可以推荐一个简单的解决方案来解决这个问题。我在 MS 文档和 Internet 中都找不到适合这个简单问题的任何内容。一种解决方案可能是分别处理 WhriteableBitmap 中的每个颜色像素,但这似乎非常尴尬。问候沃尔夫冈
解决方案
推荐阅读
- r - 将长格式重塑为宽格式,删除一些行
- c# - 如何将 Azure Function App 连接到 MYOB?
- laravel - URL 中的流明点
- python - 在 KeyError 中使用嵌套 for 循环从嵌套字典中检索项目
- assembly - 为什么“主”符号不会在 pie 二进制文件中剥离?
- javascript - TypeScript 中 dom 元素的别名?
- openshift - 错误:等待条件超时
- reactjs - 从 Ag-Grid 中单击的单元格返回值
- node.js - 如何创建一个复合索引,使一个帐户相同的电话号码两次?
- amazon-web-services - 任务中的基本容器已退出