由于图片尺寸过大,Bitmap new 不出来

lfzhaozihao 2013-02-04 03:44:35
我想对图片大小进行压缩处理,需要用到Bitmap这个类,结果发现一旦图片尺寸过大,就无法创建Bitmap,我的代码如下(主要看第一行就够了),不知大家有何高见,可以将尺寸巨大的图片保存成大小较小的图片,而尺寸不发生变化
using (Bitmap bitmap = new Bitmap(fileStream))
{
ImageCodecInfo CodecInfo = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, CodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
myEncoderParameter.Dispose();
return ms.ToArray();
}
}
...全文
512 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonespace 2013-02-05
  • 打赏
  • 举报
回复
把你的程序编译成64位程序试试看,
laviewpbt 2013-02-04
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
看看这个对你有帮助吗? C#对超大图片处理
这个对他不会有帮助,因为200MB的图像对于系统来说还能够承受, 我自己的经验是500MB是个瓶颈,原因是一般情况下 系统无法为 程序 分配更大的连续内存。
lfzhaozihao 2013-02-04
  • 打赏
  • 举报
回复
帮忙啊,实在是无从下手
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
看看这个对你有帮助吗? C#对超大图片处理
lfzhaozihao 2013-02-04
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你还是 用内存映射,一部分一部分的读入二进制流,部分部分的处理吧
我大概明白你的意思,可是我怎样才能从文件流中读取出图片的一部分,来一点一点的处理呢?处理完又怎样把他们拼接成一张图片呢?
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
内存不够了。。。
lfzhaozihao 2013-02-04
  • 打赏
  • 举报
回复
比如我试验的这张图片是9925*14038大小尺寸的图片,在代码的第一行报错
  • 打赏
  • 举报
回复
可以指定生成的图片的格式为GIF或JPEG
bdmh 2013-02-04
  • 打赏
  • 举报
回复
你还是 用内存映射,一部分一部分的读入二进制流,部分部分的处理吧

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧