如何裁剪巨幅图像
我需要在C#中处理大图像(20,000×20,000像素)。 由于内存限制,直接打开这些图像不是可行的方法,但我想要做的是将图像分割成更小的部分(裁剪)。 我正在寻找一个可以解决问题的第三方库,但到目前为止还没有结果。 我尝试过FreeImage和ImageMagick,但他们无法打开20,000x20x000像素的图像。 我怎样才能做到这一点?
我目前的工作项目包括一个图像查看器/分析程序,能够加载超过16 GB的图像。 您必须使用手动文件IO,拉出标题信息并按需创建子图像(或者如果您正在处理图像,则可以创建单个图块并就地处理它)。 很少有图书馆能够为你提供加载/修改20k×20k图像(1.2gb,24bpp)的能力,并且那些很少使用类似性能的东西(如果这是一个问题)。
不知道这是否会有所帮助,但这里有一篇关于使用C#lambda表达式进行图像处理的文章。
我不知道有任何现有的库可以做到这一点。
您可能不得不破解图像文件流,寻找存在颜色和像素数据的位置,并将像素数据的一部分读入数组,并从中创建图像。
例如,对于BMP文件格式 ,你需要寻找颜色表,加载颜色表,然后寻找像素数组部分,加载你想要的多个像素到一个数组,然后用一个新的位图那些像素。
我会用ImageMagick做的。 有一个非常可靠的.NET API,它通常是像这样进行图像处理的最佳方式。
查看.NET,这是页面下方的一部分。
https://www.imagemagick.org/script/api.php
以下是有关ImageMagick中裁剪内容如何工作的信息,用于命令行版本。
https://sofzh.miximages.com/c%23/); }
其中destRect可以是outputImage的整个大小,也可以是较小的区域。
上述就是C#学习教程:如何裁剪巨幅图像分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020728.html