将图像从Bitmap上传到服务器为png

时间:2015-04-21 19:56:53

标签: c# winforms png

我正在尝试将我在C#winform应用程序中的System.Drawing.Bitmap变量上传为我的服务器上的.png图像。现在我知道如何将Bitmap保存为.png文件,然后将其上传到我的服务器。

//Save bitmap variable as .png
bitmap.Save("img_1.png", ImageFormat.Png);

然后将其上传到我的服务器,如下所示:

using (WebClient client = new WebClient())
{
    client.Credentials = new NetworkCredential("FTP_username",
        "FTP_password");
    client.UploadFile("ftp://100.100.100.100/new_folder/img_1.png",
        "img_1.png");
}

如何直接在我的服务器上将Bitmap bitmap变量作为.png文件上传,而不必先在本地将其保存为新的.png文件?

3 个答案:

答案 0 :(得分:3)

您可以将Bitmap保存到流中并上传流:

using (WebClient client = new WebClient())
using (var ms = new MemoryStream())
{
    bitmap.Save(ms, ImageFormat.Png);
    client.Credentials = new NetworkCredential("FTP_username", "FTP_password");
    client.UploadData("ftp://100.100.100.100/new_folder/img_1.png", ms.ToArray());
}

答案 1 :(得分:0)

试试这个:

using System.Drawing;

Bitmap b = (Bitmap)Bitmap.FromStream(file.InputStream);

using (MemoryStream ms = new MemoryStream()) {
    b.Save(ms, ImageFormat.Png);

    // use the memory stream to base64 encode..
}

答案 2 :(得分:0)

由于该方法为UploadFile,因此将该文件的网址设为String作为第二个参数。

我建议用户如果不知道PNG文件,那么用户就不会...

  1. 添加一个方法,该方法可以生成并存储随机字符串(如下所示)作为类的私有变量。
  2. 将您的文件夹保存到此处,其中%TEMP%是用户的临时文件夹,RandString是之前的随机字符串:%TEMP%\RandString\ImageName.jpg
  3. 将文件保存在那里并上传。
  4. 完成后,请删除文件夹%TEMP%\RandString\