提取小部分图像而不加载所有图像

时间:2014-01-29 06:16:37

标签: c# .net wpf imagemagick jpeg

我有大型JPG图像(比如20000x10000像素),想要从这些图像中提取子图像而不加载整个图像。

我发现可以使用此ImageMagick命令:

convert -extract 226x248+4216+3377 a.jpg o.jpg

但我需要在我的C#WPF应用程序中使用它。

Magick.NET没有实现提取方法。

这是否有任何.NET库?或者至少可以复制一个简单的exe,无需在客户机上安装像ImageMagick这样的大型库。

2 个答案:

答案 0 :(得分:2)

Magick.NET确实支持提取子图像。您应该使用裁剪方法:

using(MagickImage image = new MagickImage("a.jpg"))
{
  image.Crop(new MagickGeometry(226,248,4216,3377));
  image.Write("o,jpg");
}

ImageMagick的-extract选项将在裁剪出您需要的部分之前读取整个jpg。所以这可能不是你问题的解决方案。仅对于一小部分格式,图像将无法完全读取。

答案 1 :(得分:1)

我不知道有哪些c#库可以做到这一点。不过,http://www.gdal.org的格达尔可以做到这一点。它也有c#包装器,但为此目的可能有点笨重。