c# - 代码仅检查 C# 中位图/图像的第一个像素的亮度
问题描述
我目前正在研究 C# 中的图像到 ASCII 转换器并遇到了问题。我希望程序遍历每个像素,获取亮度并添加正确的字符。但在我的代码中,它只检查图像的第一个像素,即像素 0-0,并成功将其打印到 .txt 文件中不显示任何错误消息。我尝试使用 StreamWriter,但结果相同,这意味着它可能与我的 for 循环有关。我做错了什么?
Bitmap bm = new Bitmap(source);
int width = bm.Width; // Image width
int height = bm.Height; // Image height
for (int i = 0; i < width; i++)
{
int w = 0;
w++;
int h = 0;
file = source + " ASCII.txt";
if(i > width)
{
h++;
}
System.Drawing.Color pixelColor = bm.GetPixel(i, h);
float brightness = pixelColor.GetBrightness();
using (StreamWriter writer = File.CreateText(file))
{
writer.Close(); // Creating file
}
// ASCII print
if (brightness < 0.14)
{
File.AppendAllText(file, "@");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.14 && brightness < 0.28)
{
File.AppendAllText(file, "%");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.28 && brightness < 0.42)
{
File.AppendAllText(file, "#");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.42 && brightness < 0.56)
{
File.AppendAllText(file, "*");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.56 && brightness < 0.7)
{
File.AppendAllText(file, "+");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.7 && brightness < 0.84)
{
File.AppendAllText(file, "=");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.84 && brightness < 0.98)
{
File.AppendAllText(file, "-");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
if (brightness > 0.98)
{
File.AppendAllText(file, ":");
if (w > width)
{
File.AppendAllText(file, "\n");
}
}
}
解决方案
不是 C# 专家。
但是在你的 for 循环条件中,i < width,那么该块只会在 i < width; 时执行;但是当我>宽度时你增加h,这会被击中吗?
推荐阅读
- powershell - 将字符串替换为基于导入的 CSV 列的文件
- javascript - JSON / Javascript / JQuery 我如何显示它?
- vim - 在 tmux 会话中的 vim 中打开打字稿文件时出现重复字符
- javascript - 如何使用关键字将消息发送到特定的 Discord 频道?
- swiftui - 如何在 SwiftUI 中几秒钟后导航?
- python - Tensorflow:创建一个在行维度上具有不同形状的张量
- python - 未找到文件,但该文件确实存在,给出了完整路径等
- javascript - 100vh div 之间的向上/向下导航
- rust - 如何在 clap 中使用未指定的参数
- javascript - 如何从响应负载中获取数据