-1

我正在用 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

4 回答 4

1

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

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

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

于 2012-11-01T14:52:14.270 回答
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);      
}
于 2014-02-11T09:24:53.680 回答
0

现在,我自己从来没有使用 C# 做过这个,所以更倾向于的人可能会提供帮助,但这就是我能找到的。

1)您需要将图像数据存储在Bitmap. 从你已经在做的事情来看flag

2)您需要在以下位置调用该save()函数Bitmap

flag.Save(filename, ImageFormat.Png);

3)filename将是String您定义的。这相当容易,因为您只需让应用程序提示用户输入路径并保存即可。

问题?

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

于 2012-11-01T14:52:36.257 回答
0

用这个:

flag.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
  1. 您不需要将图像添加到PictureBox. 您有一个控制台应用程序并且PictureBox是一个可视控件。
  2. 对于未来的问题,如果您先花最少的时间搜索 SO 或其他来源以获得答案,那就太好了
  3. 该问题未正确标记。如果你想保存一个System.Drawing.Bitmap它不能被标记BitmapImage,因为这仅适用于 WPF。我改变了这个。
于 2012-11-01T14:53:09.360 回答