C# 如何将构成文件的原始位显示为位图图像?

C# 如何将构成文件的原始位显示为位图图像?,c#,file,bmp,C#,File,Bmp,我想通过将文件转换为字节数组并从字节构造位图,将文件(例如MIDI文件)显示为位图。可以执行以下操作: public void Convert() { string filePath = "C:\\Users\\User\\Desktop\\sample.mid"; byte[] bytes = File.ReadAllBytes(filePath); int pixelCount = (in

我想通过将文件转换为字节数组并从字节构造位图,将文件(例如MIDI文件)显示为位图。

可以执行以下操作:

        public void Convert()
        {
            string filePath = "C:\\Users\\User\\Desktop\\sample.mid";
            byte[] bytes = File.ReadAllBytes(filePath);
            int pixelCount = (int)Math.Ceiling(bytes.Count() / 4.0);
            double width = Math.Ceiling(Math.Sqrt(pixelCount));
            double height = Math.Ceiling(pixelCount / width);
            string outputPath = "C:\\Users\\User\\Desktop\\sample.bmp";
            SaveAsBmp((int)width, (int)height, bytes, outputPath);
        }

        public void SaveAsBmp(int width, int height, byte[] argbData, string path)
        {
            using (Bitmap img = new Bitmap(width, height, PixelFormat.Format32bppPArgb))
            {
                BitmapData data = img.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, img.PixelFormat);
                for (int y = 0; y < height; y++)
                {
                    Marshal.Copy(argbData, width * y, data.Scan0 + data.Stride * y, width * 4);
                }
                img.UnlockBits(data);
                img.Save(path, ImageFormat.Bmp);
            }
        }
public void Convert()
{
string filePath=“C:\\Users\\User\\Desktop\\sample.mid”;
byte[]bytes=File.ReadAllBytes(文件路径);
int pixelCount=(int)Math.天花(bytes.Count()/4.0);
双宽度=数学天花板(数学Sqrt(像素计数));
双倍高度=数学天花板(像素数/宽度);
string outputPath=“C:\\Users\\User\\Desktop\\sample.bmp”;
SaveAsBmp((int)宽度,(int)高度,字节,输出路径);
}
public void SaveAsBmp(整数宽度、整数高度、字节[]argbData、字符串路径)
{
使用(位图img=新位图(宽度、高度、像素格式.Format32bppPArgb))
{
BitmapData data=img.LockBits(新矩形(0,0,宽度,高度),ImageLockMode.WriteOnly,img.PixelFormat);
对于(int y=0;y
以下是从这里提供的MIDI示例中获得的:


是否将音频文件转换为图像?我完全不清楚你想要实现什么。但无论如何,你应该提供你已经尝试过的东西,而不仅仅是期望我们做你的工作,这是思考,尝试,再思考。是的,这都是字节。没有理由你不能将几乎任何文件转换成图像。我写了这个问题的答案,因为当这个问题结束时,有人建议我这样做:嗯,引用对上述问题的评论:“以尽可能集中的方式撰写问题,降低上述众多低质量答案的可能性”。你的问题和封闭的问题一样不清楚。“如何实现这一点”的适当问题通常包括“这是我当前的代码,但由于以下原因它没有达到我的预期……”。请看,这与midi文件无关。它将与任何二进制文件一起“工作”。因此,题为SEM的问题似乎具有误导性。。我本以为你会想显示这些音符,但原始字节与音乐的关系并不比jpg的原始字节与图像的关系大。是的,我不认为这会导致答案错误。我随意编辑了问题中的MIDI参考。现在,问题和答案是一致的,有意义的。(一点…;-)-如果您对答案的解决方案感到满意,请随时接受您的答案。如果你想要不同的东西,请随意解释。。!谢谢,我感谢你花时间帮助改进问题和答案。很遗憾,你至少两天不能接受自己的答案