Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将位图图像保存为JPEG格式_C#_Image_Jpeg - Fatal编程技术网

C# 如何将位图图像保存为JPEG格式

C# 如何将位图图像保存为JPEG格式,c#,image,jpeg,C#,Image,Jpeg,问题是文件没有保存为JPEG。只是一个普通的文件 这是我目前的代码: private void btnSave_Click(object sender, EventArgs e) { saveDialog.FileName = txtModelName.Text; if (saveDialog.ShowDialog() == DialogResult.OK) { Bitmap bmp = new Bitmap(pnlDraw.Width, pnlDraw

问题是文件没有保存为JPEG。只是一个普通的文件

这是我目前的代码:

private void btnSave_Click(object sender, EventArgs e)
{
    saveDialog.FileName = txtModelName.Text;

    if (saveDialog.ShowDialog() == DialogResult.OK)
    {
        Bitmap bmp = new Bitmap(pnlDraw.Width, pnlDraw.Height);

        pnlDraw.DrawToBitmap(bmp, new Rectangle(0, 0,
            pnlDraw.Width, pnlDraw.Height));

        bmp.Save(saveDialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
}

在保存文件之前,检查文件名是否有
.jpg
扩展名如何

您还可以将
saveDialog
更改为仅允许用户选择
.jpg
图像

private void btnSave_Click(object sender, EventArgs e)
{
    saveDialog.FileName = txtModelName.Text;
    saveDialog.DefaultExt = "jpg";
    saveDialog.Filter = "JPG images (*.jpg)|*.jpg";    

    if (saveDialog.ShowDialog() == DialogResult.OK)
    {
        Bitmap bmp = new Bitmap(pnlDraw.Width, pnlDraw.Height);

        pnlDraw.DrawToBitmap(bmp, new Rectangle(0, 0,
            pnlDraw.Width, pnlDraw.Height));

        var fileName = saveDialog.FileName;
        if(!System.IO.Path.HasExtension(fileName) || System.IO.Path.GetExtension(fileName) != "jpg")
            fileName = fileName + ".jpg";

        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
    }
}

“普通文件”是什么意思?在我看来是正确的。我怀疑“普通文件”只是意味着文件没有正确的扩展名。我想你的问题只是扩展名。如果使用imageviewer打开文件“image1”,会发生什么情况?我的意思是,这是一个仅仅缺少扩展名的图像吗?在文件属性中,它只是说“文件类型:文件”。实际上,它不再打开了。它告诉我选择一个程序打开它,谢谢。它可以工作,但当我保存图像时,为什么它不显示JPEG保存文件类型:?@GameOver我已经用两行代码更新了我的答案,这应该是个窍门。嘿,欢迎来到这个网站,谢谢你的回答。也许你可以编辑这篇文章来解释这个问题是如何解决的,以及如何使用它?你能补充一点澄清吗?有人错误地将你的答案标记为低质量。您应该添加一些随附文本,解释您的答案如何工作,以防止进一步的标记和/或否决票。只有密码的答案。它是否试图回答这个问题?如果不是,则标记为“非答案”或建议删除(如果在审阅队列中)。b) 这在技术上是错误的吗?否决票或评论。
int width;
int height;
int stride;
int x;
int y;
string filename;

Bitmap bitmap = new Bitmap(width,height,stride,PixelFormat.Format32bppArgb,new IntPtr());

//then set the pixel;
bitmap.SetPixel(x,y,Colors.Black);
bitmap.Save(filename);