如何在c#的控制台应用程序中将位图保存为png

时间:2012-11-01 14:46:26

标签: c# bitmap png console-application

我正在用c#做一个控制台应用程序。在这个应用程序中,我必须创建一个png类型的位图,它必须存储在一些定义的路径中(比如C:或D:驱动器)。

在Windows应用程序中,我使用以下代码创建位图,它将显示在图片框中。

void CreateBitmap()
{
    System.Drawing.Bitmap flag = new System.Drawing.Bitmap(10, 10);
    for( int x = 0; x < flag.Height; ++x )
      for( int y = 0; y < flag.Width; ++y )
        flag.SetPixel(x, y, Color.White);
      for( int x = 0; x < flag.Height; ++x )
        flag.SetPixel(x, x, Color.Red);
    pictureBox1.Image = flag;
}

如何使用控制台应用程序在指定路径中创建和存储它?

我已更改了我的代码,但仍然存在错误:

static void CreatePng(string[] binvalues)
{
    String aName = System.Reflection.Assembly.GetExecutingAssembly().Location;
    String aPath = System.IO.Path.GetDirectoryName(aName);
    string[] ExecDirectories = System.IO.Directory.GetDirectories(aPath);

    System.Drawing.Bitmap flag = new System.Drawing.Bitmap(10, 10);

    for (int x = 0; x < flag.Height; ++x)
        for (int y = 0; y < flag.Width; ++y)
            flag.SetPixel(x, y, Color.White);
    for (int x = 0; x < flag.Height; ++x)
        flag.SetPixel(x, x, Color.Red);
    flag.Save(aPath, System.Drawing.Imaging.ImageFormat.Png);
}

它显示了最后一行中的运行时错误,其中flag.save似乎出错了?

4 个答案:

答案 0 :(得分:1)

使用相同的代码,而不是分配给PictureBox,而是调用位图上的Save()方法:

flag.Save("yourpath", System.Drawing.Imaging.ImageFormat.Png);

请注意,您可能必须在控制台应用程序中添加对System.Drawing的引用,因为默认情况下它不存在。

答案 1 :(得分:0)

现在,我自己从未使用C#做过这样的事情,所以有更多倾向的人可能会提供帮助,但这是我能够找到的。

1)您需要将图像数据存储在Bitmap中。从你已经使用flag

开始的事情来看

2)您需要调用save()上的Bitmap函数:

flag.Save(filename, ImageFormat.Png);

3)filename将是您定义的String。这很简单,因为您可以让应用程序提示用户输入路径并保存它。

有问题吗?

免责声明:我从this page收到了我的信息。关于保存你可以挖掘的png的“正确”方法有很多讨论。

答案 2 :(得分:0)

使用此:

flag.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
  1. 您无需将图像添加到PictureBox。您有一个控制台应用程序,PictureBox是一个可视化控件。
  2. 如果您花费最少的时间搜索SO或其他来源以获得答案,那将是一件好事。
  3. 问题没有正确标记。如果您要保存System.Drawing.Bitmap,则无法标记BitmapImage,因为这仅适用于WPF。我改变了这个。

答案 3 :(得分:0)

您可以尝试下面的代码 - :

public bool ResizeImage(string OriginalFilepath, string NewFilepath)
{
  Bitmap original = (Bitmap)Image.FromFile(OriginalFilepath);
  Bitmap resized = new Bitmap(original, new Size(Width,Height));
  resized.Save(NewFilepath.png);      
}