现在有一张JPEG图片,因为图片不清晰,有大量波纹,所以要求将这个图转化为BMP位图并去掉里面的单数行,目前问题所在就是BMP位图貌似不完整了 ,用BitImage怎么也转换不过去,请求问题所在根源,70分,在线等//读取jpeg后转换,图片大小为704*576
Bitmap bitImage = new Bitmap(strPath);
MemoryStream ms = new MemoryStream();
bitImage.Save(ms, ImageFormat.Bmp);
byte[] hImageBytes = ms.ToArray();//去掉单行后大小应该为704*288
byte[] buffer = new byte[704 * 288 * 3];//新图缓冲
int nLength = mHPHM.hImageBytes.Length;
int nTemp = 0;
for (int i = 0; i < 576; i++)
{
if (i % 2 == 0)
{
Array.Copy(mHPHM.hImageBytes, i * 704 * 3, buffer, nTemp * 704 * 3, 704 * 3);
nTemp++;
}
}
Bitmap bit = new Bitmap(new MemoryStream(buffer));?????在此地方出错,显示GDI+一般性错误,我觉得应该是bmp位图数据流被截断的原因所以导致图片不完整,所以比较头大,不知道如何去处理,所以请教CSDN上的各大高手,谢谢,若能得到答案,70分双手奉上,因为本人最多只有70分了
Bitmap bitImage = new Bitmap(strPath);
MemoryStream ms = new MemoryStream();
bitImage.Save(ms, ImageFormat.Bmp);
byte[] hImageBytes = ms.ToArray();//去掉单行后大小应该为704*288
byte[] buffer = new byte[704 * 288 * 3];//新图缓冲
int nLength = mHPHM.hImageBytes.Length;
int nTemp = 0;
for (int i = 0; i < 576; i++)
{
if (i % 2 == 0)
{
Array.Copy(mHPHM.hImageBytes, i * 704 * 3, buffer, nTemp * 704 * 3, 704 * 3);
nTemp++;
}
}
Bitmap bit = new Bitmap(new MemoryStream(buffer));?????在此地方出错,显示GDI+一般性错误,我觉得应该是bmp位图数据流被截断的原因所以导致图片不完整,所以比较头大,不知道如何去处理,所以请教CSDN上的各大高手,谢谢,若能得到答案,70分双手奉上,因为本人最多只有70分了
解决方案 »
- 用C#的同步机制实现一个有限长队列(满了就不能再加了),不要消耗CPU
- 问个小问题,c#二次处理数据的
- 菜鸟急求:vs2005 C#连接access数据库的winform添加删除的实例,数据写入不到数据库?
- 用DataSet.WriteXml写一个xml文件的时候,空字段不能生成Node,如何解决
- 求救:创建事件源问题
- 数据库链接问题!
- 如何实现windows图片的缩略图效果
- ActiveReports WinFroms 平台 PDF 导出代码
- 7张JPG 由于需要实时调用,常常调用,想保存在内存中!!!!
- 这是怎么回事啊,详情请看,大家可能都增碰到过的的问题
- 数据转换问题(新手请教)
- .net自带的 压缩问题
if (picCoverImage.Image != null)
{ using (MemoryStream mem = new MemoryStream())
{
//克隆Bitmap对象
Bitmap bmp = new Bitmap(picCoverImage.Image);
bmp.Save(mem, picCoverImage.Image.RawFormat);
book.CoverImage = new Binary(mem.ToArray());
bmp.Dispose();
}
}
具体看Bitmap.LockBits的参考和例子。
请看这里#27楼
http://topic.csdn.net/u/20080724/10/efae17c1-3ed7-4a00-82e2-72c96f2b2af4.html
{
System.IO.MemoryStream ms = new MemoryStream();
image.Save(ms, Image.RawFormat);
byte[] b=ms.ToArray();
ms.Close();
return b;
}
Bitmap bmp = new Bitmap(openFileDialog1 .FileName );
Bitmap bmp2 = new Bitmap(1024, 768, PixelFormat.Format16bppRgb555);
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp,0,0);
pictureBox1.Image = (Image)bmp2 ;
FILE = openFileDialog1.FileName;
openFileDialog1.Dispose();
draw.Dispose();
bmp.Dispose();