在 C# 控制台上使用用户输入图像



我正在开发一个将图像覆盖在另一个图像上的程序,到目前为止它可以工作,但唯一的问题是我需要为图像文件设置一个路径我想用作程序工作的基础。

有没有办法使程序可以接受任何 png 文件而无需使用特定路径?所述程序将用于快速为图片加水印(即。假设用户有一张他/她希望加水印的照片,他们会将 png 文件拖到构建的可执行文件中,它会给出带有水印的编辑图片)

(它必须在控制台上,我不能使用 wpf 或表单)。

可以使用控制台应用程序的第一个命令行参数来接收路径。然后,要使用它,用户将 png 文件拖放到 exe 中(拖到资源管理器中的图标中)。然后,exe 将以用户拖动的文件路径作为第一个参数运行,然后正常执行。

事实上,如果用户拖放多个文件,则每个文件都将被视为单独的命令行参数。

当没有拖动任何文件时,您希望告诉用户如何使用您的 exe。另外,您可以保留Console.ReadLine作为替代输入法。

附录:您可以将文件拖放到控制台窗口中,它的行为就像用户键入路径一样。这也应该有效...事实上,如果你把我上面提到的Console.ReadLine,两种方式都行得通。只有一个文件,在默认控制台和电源外壳中测试。

我让检查文件类型由你决定。实际上,它也适用于文件夹,根据需要处理它们(例如,您可以使用Directoy.GetFilesDirectory.EnumerateFiles)。

基本思想是这样的(没有错误检查):

static void Main(string[] args)
{
if (args.Length == 0 )
{
Console.WriteLine("Command line Usage: ConsoleAppName.exe filePath");
Console.WriteLine("You can drag and drop files into the executable to use it");
// Optional: take a path from Console.ReadLine
}
else
{
foreach (var filePath in args)
{
Console.WriteLine($"Processing: {filePath}");
// Optional: check if folder and handle correctly
ProcessFile(filePath);
}
Console.WriteLine("All done");
}
Console.WriteLine("[Press any key to exit]");
Console.ReadKey();
}

我假设文件检查发生在ProcessFile内部


当然,您可以从控制台应用程序引用System.Drawing

而不是采用扩展名或尝试获取文件的标头。我建议尝试加载图像(Bitmap(string))。这样,它将支持GDI+可以加载的所有格式(BMP,GIF,EXIF,JPG,PNG和TIFF),即使扩展名错误也会这样做。这也意味着,如果图像不是受支持格式之一的图像,您将获得ArgumentException

相关内容

  • 没有找到相关文章

最新更新