C# 更改图像dpi而不更改它';s皮克斯格式

C# 更改图像dpi而不更改它';s皮克斯格式,c#,image,bitmap,resize,dpi,C#,Image,Bitmap,Resize,Dpi,每次我尝试更改图像的dpi时,像素格式(颜色方案-RGB、CMYK等…)似乎都在更改。 在我唯一一次成功保存像素格式时,dpi在调试模式下似乎发生了更改,但在该过程完成后,它会更改回其原始设置 我尝试的代码如下所示: using (var ms = new MemoryStream()) { using (var bmpInput = Image.FromFile(path) as Bitmap) {

每次我尝试更改图像的dpi时,像素格式(颜色方案-RGB、CMYK等…)似乎都在更改。 在我唯一一次成功保存像素格式时,dpi在调试模式下似乎发生了更改,但在该过程完成后,它会更改回其原始设置

我尝试的代码如下所示:

        using (var ms = new MemoryStream())
        {
            using (var bmpInput = Image.FromFile(path) as Bitmap)
            {
                using (var bmpOutput = (Bitmap)bmpInput.Clone())                        
                {
                    foreach (var id in bmpInput.PropertyIdList)
                        bmpOutput.SetPropertyItem(bmpInput.GetPropertyItem(id));                        
                    if (doResize)
                        bmpOutput.SetResolution(dpi, dpi);

                    bmpOutput.Save(ms, bmpInput.RawFormat);
                    return ms.ToArray();
                }
            }
        } 
在用代码保存图像之前,请尝试此操作

Application.DoEvents();