[英]Working with user input images on C# console
我正在开发一个程序,该程序可以将图像叠加在另一个程序上,到目前为止,它可以工作,但是唯一的问题是我需要为要用作程序工作基础的图像文件设置路径。
无论如何,它使得程序可以接受任何png文件而无需使用特定路径? 所述程序将用于快速为照片加水印(即,假设用户拥有他/她希望对其加水印的照片,他们会将png文件拖到内置可执行文件中,并为编辑后的图片加水印)
(它必须在控制台上,我不能使用wpf或表格)。
您可以使用控制台应用程序的第一个命令行参数来接收路径。 然后,要使用它,用户将png文件拖放到exe中(拖放到资源管理器中的图标中)。 然后,exe将以用户拖动的文件路径作为第一个参数运行,然后按常规执行。
实际上,如果用户拖放多个文件,则每个文件都将作为一个单独的命令行参数。
当没有文件被拖动时,您想告诉用户如何使用exe。 另外,您可以保留Console.ReadLine
作为替代输入法。
附录 :您可以将文件拖放到控制台窗口中,其行为就像用户键入路径一样。 这也应该起作用...实际上,如果您放置了我上面提到的Console.ReadLine
,那么两种方法都可以起作用。 在默认控制台和Powershell中仅测试了一个文件。
我让您检查文件类型。 实际上,它也可以使用文件夹,并Directoy.GetFiles
处理它们(例如,您可以使用Directoy.GetFiles
或Directory.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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.