从文件加载的图像创建并保存缩略图

时间:2017-04-06 13:59:21

标签: c# .net vba

如何从VBA中的文件加载的图像中创建和保存缩略图?

  1. 根据定义文件路径
  2. 的字符串将图像加载到内存中
  3. 制作该图片的缩略图
  4. 将该图像另存为jpg文件夹
  5. 我知道如何用C#写这个。我试图为此目的创建一个外部exe文件但不知何故当我尝试通过VBA Shell运行它时它不起作用,但是如果我通常通过Windows资源管理器传递一个参数,它就可以工作。

    这是ThumbMaker的完整C#代码:

    using System;
    using System.Drawing;
    
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 2)
            {
                string inputPath = args[0];
                string outputPath = args[1];
                try
                {
                    Bitmap b = (Bitmap)Bitmap.FromFile(@inputPath);
                    b.GetThumbnailImage(160, 160, null, IntPtr.Zero).Save(outputPath);
                    Console.WriteLine(inputPath);
                    Console.WriteLine(outputPath);
                    Console.WriteLine(b.Height);
                    Console.ReadLine();
    
                }
                catch
                {
                    Console.WriteLine("Something went wrong, probably input file could not be converted to bitmap");
                    Console.ReadLine();
                }
            }
            else
            {
                Console.WriteLine("You must run this program with 2 parameters");
                Console.WriteLine("1. is inputPath , 2. is outputPath");
                Console.ReadLine();
            }
        }
    }
    

    这基本上是我需要转换为VBA的内容:

    Bitmap b = (Bitmap)Bitmap.FromFile(@inputPath);
    b.GetThumbnailImage(160, 160, null, IntPtr.Zero).Save(outputPath);
    

    此VBA尝试无效:

    Private Sub UploadButton_Click()
    
        Dim strProgramName As String
        Dim strArgument1 As String
        Dim strArgument2 As String
    
        strProgramName = Initialization.ImagesPath & "ThumbnailMaker.exe"
        strArgument1 = PathTextBox.Text
        'strArgument2 = ImageID & "_img" & ImageNumber & ".jpg"
        strArgument2 = "newIMG.jpg"
    
        Call Shell("""" & strProgramName & """ """ & strArgument1 & """ """ & strArgument2 & """", 1) 
    
    End Sub
    

1 个答案:

答案 0 :(得分:0)

假设您正在尝试使用外部程序创建缩略图,我只想这样做:

Process.Start("C:/Path/ThumbnailMaker.exe", "Your Arguments for the external 
Program here i.e. the filepath: Initialization.ImagesPath")

然后,如果您可以使用第三方程序指定文件的输出名称,您也可以使用此参数然后获取文件,因为您已经获得了名称。否则,如果本程序因任何原因使用随机化输出文件名,请使用systemfilewatch并获取您的文件名。