当前位置: 首页 > 知识库问答 >
问题:

如何在控制台应用程序中用相同的文件名但不同的格式替换映像文件格式?

曹凯泽
2023-03-14

本例中的原始格式是.jpg,我想用.gif替换这些文件。因此,例如,如果原始文件是:test.jpg,那么最终目录中将只有test.gif

这就是我所做的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Drawing;

namespace ConvertImagesFormats
{
    class Program
    {
        static void Main(string[] args)
        {
            FileInfo[] imagesToConvert;
            string sourceDirectory = @"C:\test";
            string targetDirectory = @"C:\test";
            DirectoryInfo di = new DirectoryInfo(sourceDirectory);
            imagesToConvert = di.GetFiles("*.jpg");
            Bitmap bmp;

            for (int i = imagesToConvert.Length - 1; i > 0; i--)
            {
                bmp = new Bitmap(imagesToConvert[i].FullName);
                bmp.Save(targetDirectory + "\\" + imagesToConvert[i].Name, 
                    System.Drawing.Imaging.ImageFormat.Gif);
            }
        }
    }
}
bmp.Save(targetDirectory + "\\" + imagesToConvert[i].Name, 
    System.Drawing.Imaging.ImageFormat.Gif);

共有1个答案

王宏扬
2023-03-14

管用吗?还添加了一点重构:

using System.Drawing.Imaging;
using System.IO;
using System.Drawing;

namespace ConvertImagesFormats
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\test";
            string targetDirectory = @"C:\test";
            ImageFormat imageFormat = ImageFormat.Gif;

            foreach(var image in Directory.GetFiles(sourceDirectory, "*.jpg"))
            {
                using (Bitmap bmp = new Bitmap(image))
                {
                    string targetName = Path.GetFileNameWithoutExtension(image) + "." + imageFormat;
                    bmp.Save(Path.Combine(targetDirectory, targetName), imageFormat);
                }
            }
        }
    }
}
 类似资料:
  • 我有两个文件命名为文章和类别。我使用SEO URL结构生成了一个URL格式。样品: 实例com/文章标题 实例com/类别标题 代码: 但有一个问题。我不能同时使用两种url格式。htaccess文件。他看到第一行,但忽略了另一行。但是我想对这两个文件使用相同的格式。你能帮忙吗?

  • 目前我们看到的输入文件都只包含一种语言,但在实际应用中我们会遇到有些包含多种语言的常用文件格式。例如,Java的文档注释,XML文件等。这些环绕着模板表达式的文本需要不同的处理方式,它们被称为孤岛语言。 ANTLR有提供一个称之为“词法模型”的词法分析器特性,它让我们可以很容易地处理包含混合格式的文件。基本思路是:当词法分析器看到特殊的哨兵字符序列时,让它在模式之间来回切换。 XML是一个很好例子

  • 我的要求是为不同格式的文件(PSV和CSV)轮询两个不同的目录,并使用Spring批处理它。 我使用入站通道适配器轮询目录。但是,我无法找到一种方法来根据文件类型调用相应的阅读器及其标记器和字段映射器。 例如,如果它是psv-调用PSV阅读器,如果它是csv-调用CSVReader,CSV线路映射器 任何帮助都将不胜感激。 谢谢

  • 问题内容: 谁能推荐一种安全的解决方案,从给定的根目录开始,用文件名和目录名中的下划线递归替换空格?例如: 变成: 问题答案: 使用(aka )这是一个Perl脚本,可能已经在您的系统上。分两个步骤进行: 基于 Jürgen的 回答,并且能够使用(Perl脚本)的“ Revision 1.5 1998/12/18 16:16:31 rmb1”版本在一个绑定中处理多层文件和目录:

  • 问题内容: 我正在尝试仅将原始文件从一个目录复制到另一个目录,但是某些文件具有相同的名称…我正在尝试使用哈希来比较文件,如果其不在目录中发送并且名称相同,它到file_name.something。目前,我正在获取一些文件,并且具有相同名称的文件正在被覆盖…任何人都可以提出建议吗? 问题答案: 您将哈希与文件名进行比较。你需要类似的东西 计算目标文件夹中每个文件的哈希值。 此外,在当前版本中,您的

  • 我有两个类,它们具有相同的类名并使用相同的包名。但是,这两个类文件位于不同的目录中。这两个类之间的另一个不同之处是,每个类中都有其他类中没有的方法。本质上,我想将这些方法拆分为两个使用相同名称但不同文件夹的单独文件。 理论上,我认为这是可能的,因为Java编译器在构建输出时确实维护了目录结构。所以在运行时,如果在类中调用了一个方法,Java可能会在任何一个文件中找到该方法。 这可能吗?我使用的是I