日期:2014-05-17  浏览次数:20786 次

【求助】C#保存图片为什么改变图片的大小???
我是这么做的:我是先打开选择文件窗体,然后得到图片路径,保存到fullPath变量里,
byte[] b = ImgToByt(Image.FromFile(fullPath));

然后传到Web服务进行保存,Web服务的方法是这样的:

[WebMethod]
        public object UpdateFile(byte[] content, string extended)
        {
            //重命名图片的名称与路径 保存到F盘下的DC文件夹
            string pn = string.Format(@"F:\DC\{0}.{1}",                  DateTime.Now.ToString("yyyyMMddHHmmss"), extended);
            //File.WriteAllBytes(Server.MapPath(pathandname), content);
            //File.WriteAllBytes(pn, content);
            MemoryStream ms=new MemoryStream(content);
            FileStream fs=new FileStream(pn,FileMode.Create);
            ms.WriteTo(fs);
            ms.Close();
            fs.Close();
            return content.Length;
        }

这里不管我用File.WriteAllBytes还是现在这种方法保存,图片大小都会改变,从100多K变成了200多K
图片 c#

------解决方案--------------------
ImgToByt方法里写了什么?
------解决方案--------------------
引用:
ImgToByt方法里写了什么?

你说你也是你回复给人家解决下也行阿
------解决方案--------------------
img.Save方法本身就会改变原图数据,你无法包装读取和保存的格式是完全一样的,这里保存其实是图形编码。
另外imagedata = ms.GetBuffer();是错误的,要写成:imagedata = ms.ToArray();
Buffer的尺寸远大于实际大小,不然就不叫缓存了。