每次将新文件放入文件夹时,如何使用位图从数据文件的内容生成二维码?

问题描述 投票:0回答:0

详情:

我想创建一个接受字符串输入的位图编码器方法。每次将新文件放入文件夹时,将在程序类中调用编码器将数据文件编码为 QRImage。

我将文件系统观察器与定义的“OnChange”事件处理程序一起使用,该事件处理程序检测何时创建/添加新文件到文件夹。当“OnChange”被触发时,它调用 Encoder 方法对添加到文件夹的文件进行编码。

问题:

我的文件系统观察器工作(成功检测到新文件),但是当一个新文件被添加到一个文件夹时,位图编码器,编码文件名而不是文件中的内容.

位图编码文件的方法:

`public static Bitmap Enconder(string input)
        {
            QRCodeGenerator Encoder = new QRCodeGenerator();
            QRCodeData QR_Data = 
 Encoder.CreateQrCode(input,QRCodeGenerator.ECCLevel.Q);

            QRCode qrCode = new QRCode(QR_Data);
            Bitmap QR_bitmap = qrCode.GetGraphic(5);

            return QR_bitmap;
        }`

程序类中使用的System watcher方法(works)

`public static void Watch(string watch_folder)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = watch_folder;                                                         

            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
               | NotifyFilters.FileName | NotifyFilters.DirectoryName;

            watcher.Filter = "*.txt";                                                                   

            watcher.Created += new FileSystemEventHandler(OnChanged);`

“OnChange”事件处理程序定义(在程序类中)


`        public static void OnChanged(object source, FileSystemEventArgs e)                        
        {
            string ss = @"C:\Users\Desktop\BarCodeData\*.txt";

            Bitmap bmap = QR.Encoder(ss);

            QR.SaveImage(bmap, ss, @"C:\Users\Desktop\BarCodeImages\");

        }`

Save Image方法用于将QR图像保存到文件夹方法(更多细节,不是问题)

`        public static void SaveImage(Bitmap b, string data, string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            Image i = b;
            var v = data.Split('|');                                                                            //data should be time loaded | program | MSN |....
            string date = DateTime.Now.ToString().Replace('/', '_').Replace(':', '_');
            var filename = date + ".png";

            i.Save(path + filename, System.Drawing.Imaging.ImageFormat.Png);

        }`

问题可能是:

*string ss @"C:\Users\Desktop\BarCodeData*.txt"; 我做了 .txt 来接受任何文本文件,但是我做错了格式吗?

c# encoding bitmap qr-code filesystemwatcher
© www.soinside.com 2019 - 2024. All rights reserved.