本人想通过二进制读图片,然后把图片转换成灰色图,不能用C#的函数实现,只能在二进制里实现,现在最大的问题是我不知道图片的头和尾的二进制描述信息占多少位(大约占几十位吧),因为在每个图片里都会有一些头和尾的描述信息,这些信息是不用处理的。请问大家有没有相关的资料,我只需要做jpg,bmp等一些常用的图片格式就好了.

解决方案 »

  1.   

    我以前用过 vc6写过色彩的分离程序,bmp是三色图(采用rgb或则其他方式表示)。具体的资料比较少,<vc++.net 图像编程> 这书上有些简单的例子。
      

  2.   

    现在我就是要采用rgb的方法实现灰色图,但是用二进制读图片的时候会读到一些头信息和尾信息,这些信息是不用处理的,我现在就是不知道它的头和尾占了多少空间!
      

  3.   

    http://www.fortunecity.com/skyscraper/windows/364/bmpffrmt.html
    这种问题很简单,到google里搜一下就好了。
      

  4.   

    我现在只需处理bmp的格式,谁可以帮一下我啊,位图文件头标到底占用了几个字节.
      

  5.   

    BMP有压缩(rle方法)和非压缩两种格式,对于使用 Windows 格式的4位和
    8位图像(灰度图),可以指定采用 RLE (Run-Length-Encoding) 压缩,但
    作为图像资源使用的文件都是不压缩的.2种bmp位图文件头标好像占用字节不一样。
      

  6.   

    我有BMP文件格式的资料,可EMAIL给你.
      

  7.   


    我用C#怎样可以知道他用的是有压缩还是非压缩,C#有函数可以直接得到他的BMP位图的头吗?
      

  8.   

    现在有一个新问题,就是怎样读二进制,我用
    string str="";
    FileStream myFileStream=new FileStream("图片.bmp",FileMode.Open);
    BinaryReader br=new BinaryReader(myFileStream);
    for(i=0;i<=55;i++)
       str=str+br.ReadByte();
    但是读出来的好像不是二进制的数啊,是不是写错了什么?
      

  9.   

    好象GDI+中的Bitmap类可以直接加载.bmp吧
      

  10.   

    //将数据库中保存的二进制文件转换为字节数组
    byte[] aa = (byte[])记录集["列名"]; //将字节数组读入内存
    MemoryStream ms = new MemoryStream (aa);
    //根据输入的文件名创建文件
    FileStream fs = new FileStream ("图片.bmp",FileMode .Create );
    ms.WriteTo (fs);