提供有关此主题的背景信息。我试图通过使用memorystream将图像文件转换为byte []来返回memorystream.ToArray(); 但是,我注意到转换后的图像质量下降了inputBitmap - > byte [] - > outputBitmap。 outputBitmap的质量低于inputBitmap。 我将图像转换为byte []的代码如下
MemoryStream mstream = new MemoryStream();
myImage.Save(mstream,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buffer = mstream.ToArray();
并将字节[]转换回图像,
MemoryStream mstream = new MemoryStream(buffer);
Image newImage = Image.FromStream(mstream);
有人可以解释为什么会这样,希望能指导我纠正这个问题吗? 请注意,在我使用inputBitmap作为我的pictureBox.Image之前,它的质量看起来很棒。但是在从byte []转换为outputBitmap之后,将outputBitmap设置为我的pictureBox.Image变得模糊,质量低。
答案 0 :(得分:4)
有些事情对我来说很突出。
这意味着您可能正在压缩已经压缩的图像,从而在此过程中丢失更多信息。
如果可以的话,我会更改为将文件保存为PNG,如果没有,请确保在保存之前将JPG的质量设置为100%。这将减少文件压缩的最小值,从而最大限度地减少数据丢失。
如果你仍然看到质量上的差异,那么我唯一可以想到的就是解释这是屏幕截图和保存之间的分辨率(像素数和/或颜色深度)的差异文件。确保将目标位图大小和颜色深度设置为与源位图相同。