none
关于c# 保存图片的问题··· 求教!!! RRS feed

  • 问题

  • 一张原始图片,我将其以Jpeg格式 转换成 byte[] 数组,然后将其保存至数据库。

    现在,我从数据中将这张图片的二进制数组读出放在以个byte[]数组中 b1,

     然后将其转换成图像,用Jpeg格式保存到硬盘。
    保存完以后我加载刚保存到硬盘的图像,然后再用一个byte[]数组 b2来保存其转换成二进制的数组。


    这时我将两个 byte[]数组通过循环来进行比较。内容是否一致,

    为什么全是不一致的???这是同一张图片。

    Code:


    //比较的代码
            private bool PasswordEquals(byte[] b1, byte[] b2)
            {
                if (b1.Length != b2.Length)
                {
                    return false;
                }
                if (b1 == null || b2 == null)
                {
                    return false;
                }
                for (int i = 0; i < b1.Length; i++)
                {
                    if (b1[i] != b2[i])
                    {
                        MessageBox.Show(i.ToString());
                        return false;
                    }
                }
                return true;
            }

    2009年11月13日 2:20

答案

全部回复

  • 注意你读入使用的Encoding和写入使用的Encoding要一致.

    2009年11月13日 3:11
  • 你好!
         应该是你保存和读出的过程中间的转换出现的问题,你可能转换的方法不一致!
         请问可以提供源代码吗?
    周雪峰
    2009年11月13日 3:17
    版主
  • imageHandler.Current_Bitmap.Save(imageHandler.BitmapPath,ImageFormat.Jpeg);
    数据库读出的文件保存到硬盘


           public  byte[] ImgToByt(Image img)
            {
                MemoryStream ms = new MemoryStream();
                byte[] imagedata = null;
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                imagedata = ms.GetBuffer();
                return imagedata;
            }

            public  Image BytToImg(byte[] byt)
            {
                MemoryStream ms = new MemoryStream(byt);
                Image img = Image.FromStream(ms);
                return img;
            }
    图片转数组上传和转数组比较的



    2009年11月13日 8:22
  • 尝试使用ToArray方法,GetBuffer会把未使用的字节也取出来!
    周雪峰
    2009年11月13日 9:19
    版主
  • 能够再说清楚一点吗?是在转换的时候用,还是比较的时候?
    因为我在比较的时候先判断了其数组长度是否相等
    2009年11月13日 11:58
  • 你好!

    我想周版主说的意思是,把
    imagedata = ms.GetBuffer();
    改成
    imagedata = ms.ToArray();
    的意思吧。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2009年11月16日 10:50
  • 是吗?我试一下呵呵,谢谢!
    2009年11月16日 16:48