目前项目中用到,上传图片后,如果是gif的图片则转换为jpg格式存储在数据库中(存的是byte[]的)。 以下是我的代码,始终得不到期望数据.
说明:ObjectStream 是保证正确的图片流.以下代码获取的都是同一个ObjectStream.1.
(这样出来的jpg是正确的,没问题)
Image myImg =Image.FromStream(ObjectStream);
myImg.Save(@"D:\\13.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
-----------------------------------------------------------------
//以下代码,读出来的FileByte全部为0).
Image myImg =Image.FromStream(ObjectStream);
MemoryStream ms = new MemoryStream();
myImg.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Read(FileByte, 0, FileLength); //读取图象文件数据
ms.Close();2.
//以下代码也读不出正确的byte[],和上面一样,FileByte全部为0
System.Drawing.Imaging.FrameDimension ImgFrmDim = new System.Drawing.Imaging.FrameDimension(myImg.FrameDimensionsList[0]);
int nooffrm = myImg.GetFrameCount(ImgFrmDim);
MemoryStream ms = new MemoryStream();
for (int i = 0; i < nooffrm; i++)
{
myImg.SelectActiveFrame(ImgFrmDim, i);
myImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
}
ms.Read(FileByte, 0, FileLength); //读取图象文件数据
ms.Close();
求个解决办法,谢谢了
说明:ObjectStream 是保证正确的图片流.以下代码获取的都是同一个ObjectStream.1.
(这样出来的jpg是正确的,没问题)
Image myImg =Image.FromStream(ObjectStream);
myImg.Save(@"D:\\13.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
-----------------------------------------------------------------
//以下代码,读出来的FileByte全部为0).
Image myImg =Image.FromStream(ObjectStream);
MemoryStream ms = new MemoryStream();
myImg.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Read(FileByte, 0, FileLength); //读取图象文件数据
ms.Close();2.
//以下代码也读不出正确的byte[],和上面一样,FileByte全部为0
System.Drawing.Imaging.FrameDimension ImgFrmDim = new System.Drawing.Imaging.FrameDimension(myImg.FrameDimensionsList[0]);
int nooffrm = myImg.GetFrameCount(ImgFrmDim);
MemoryStream ms = new MemoryStream();
for (int i = 0; i < nooffrm; i++)
{
myImg.SelectActiveFrame(ImgFrmDim, i);
myImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
}
ms.Read(FileByte, 0, FileLength); //读取图象文件数据
ms.Close();
求个解决办法,谢谢了
解决方案 »
- 用C#做校园网登陆软件
- AppState属于哪个命名空间,需要哪些引用?
- DirectShow捕捉程序如何设置捕捉图像的质量\尺寸,声音的质量bit率?
- access 数据库,如何保护后台数据库,C#编程数据库的储存方案???(100分)
- 请教高手一个线程问题 在windowsForm中怎样用线程控制进度条显示程序执行进度状态
- 请问在.NET Framework精简版下如何得到窗体句柄
- 有谁知道哪里有快的Excel控件
- Nevron Chart for .NET这个软件怎么用啊?高分送!
- 关于自定义构造函数,有点不明,上来请教下
- 請版主將我提的以下問題刪除, 謝過
- 关于 HTTP/1.1 400 Bad Request ( The data is invalid. ) 的问题
- asp.net +sql2000开发的网站上传的时候数据库是怎么上传的?数据库上传的是mdf格式的文件吗?怎么分离数据从本机电脑上?上传后怎么配置网站
{
byte[] byteImage = new byte[0];
using (MemoryStream ms = new MemoryStream())
{
try
{
Bitmap bitmap = new Bitmap(inputimage);
GraphicsUnit gu = GraphicsUnit.Pixel;
RectangleF rectf = inputimage.GetBounds(ref gu);
Rectangle rect = new Rectangle((int)rectf.X, (int)rectf.Y, (int)rectf.Width, (int)rectf.Height);
System.Drawing.Imaging.BitmapData bd = bitmap.LockBits(rect,
System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat);
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byteImage = ms.ToArray();
bitmap.UnlockBits(bd);
}
catch (Exception ex)
{
}
} return byteImage;
}
ms.Position=0;//加上这句试试。
ms.Read(FileByte, 0, FileLength); //读取图象文件数据
----------------
这句精辟~~~加了就OK了汗~。