日期:2014-05-18  浏览次数:20883 次

求助,关于图片的操作!
我现在有同个类,一个类是 ImageHelper 用来对图片进行一些处理,一个类是 FileHelper 用来保存和读入文件,
为了通用,我在imagehelper里处理后的bitmap会转为 stream让filehelper来保存。

现在我用stream后保存为jpg后用PS打开提示无法完成请求,因为jpeg标志符段长度太短(该文件可能被截断或不完整),用windows图片查看是没有预览。
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
fh.SaveFileFromStream((Stream)ms, sPath);
ms.Close();

我不用stream保存,直接用bitmap.Save(sPath),用PS打开就会提示无法完成请求,因为找到不知名的或无效的jpeg标志符类型。用windows图片查看是正常的

------解决方案--------------------
ms里面如果真放一个图片的流的话是不是就没问题了,
你现在是一个空的吧。。
------解决方案--------------------
Bmp.Save(saveBmp.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
指定格式
------解决方案--------------------
应该是扩展名格式问题。例如gif的图片你生成后把它改成jpg格式的图片了。
手动改扩展名然后再用PS打开试试
------解决方案--------------------
貌似2句顺序反了

MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
fh.SaveFileFromStream((Stream)ms, sPath);
ms.Close();

应该是先fh.Save再是bitmap.Save
MemoryStream ms = new MemoryStream();
fh.SaveFileFromStream((Stream)ms, sPath);
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Close();