我尝试使用MemoryStream
将图像转换为字节数组,但是当我恢复图像时,图像看起来会有所不同。
我制作了一个简单的Form
应用来展示问题。我在这个例子中使用谷歌浏览器图标:
var process = Process.GetProcessById(3876); // found pid manually
var image = Icon.ExtractAssociatedIcon(process.MainModule.FileName).ToBitmap();
pictureBox1.Image = image;
byte[] imageBytes;
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Bmp);
imageBytes = ms.ToArray();
}
using (var ms = new MemoryStream(imageBytes))
{
pictureBox2.Image = (Bitmap) Image.FromStream(ms);
}
结果:
知道我在这里失踪的是什么吗?
更新我能够使用以下代码获取正确的字节:
var converter = new ImageConverter();
var imageBytes = (byte[]) converter.ConvertTo(image, typeof(byte[]));
仍然想知道内存流的最新情况。
答案 0 :(得分:3)
Icons are complicated。当它们包含透明部分时,转换为BMP或JPG almost always seems to end badly。您也不需要 realm.write(() => {
let exercise = realm.create('Exercise', {
id: 209,
name: 'Dumbbell Overhead Press',
category: 'Military Press',
bodyPart: 'Shoulder'
}, true);
exercise.levels.push({
level: 3,
equipments: 'DB'
});
});
它几乎完成了没有BMP转换的代码所做的事情:
ImageConverter