C#如何分块处理很大的图像,以避免调试时出现“内存不足”的错误提示

解决方案 »

  1.   

    这个问题不是一个人问过,但是确实来说,目前在CSDN中没有人解决过,在商业软件行列,似乎也只看到PS有这个能力。
      

  2.   

    这是很简单的编程设计,问题是你问题太含糊了,不知道具体你要解决什么问题。随便说一下吧。比如数在(WPF/Silverlight)界面上你可以放一个Canvas,然后可以产生n个Image分别设置不同的Left和Top,它们正好对在一起覆盖在Canvas内。这不就行了嘛。你给每个Image的Source设置不同的BitmapImage,它们就会动态并行下载,并且一瞬间就覆盖了了Canvas,看起来这个Canvas就是一次性下载的Image似地。
      

  3.   

    至于说其它的(你的问题实在是毫无重点,不知道该给你说什么),比如说要读取图片中的一部分,那么可能属于要读取图片文件的格式,然后使用FileStream随机读取文件来重新一个一个小图片文件。或者其它的什么什么的。关键是你所谓的“分块处理很大的图像”是太含糊了,不知道你的问题都分别处在什么地方。没有必要改变时就不需要改变,知道了具体的bug时才可能重新设计整个处理过程。
      

  4.   

    这就是码农与程序员的区别。
    jpg里面几乎用了大量的算法。虽然是开源的但是搞得懂的还是不多。
    国外一牛写的。
    http://download.csdn.net/detail/zanfeng/4274333
      

  5.   

    jpg的算法以及文件格式c语言的源代码官网上都有。
      

  6.   

    先读取一个图片文件的二进制序列,判断出文件头,然后不一次性显示整张大图,而是读取这张图的二进制数据,然后平均分成N段,除了第一段外,其他段都补上文件头数据,然后转成bitmap。