您可以在 fjcore 中轻松编写自己的裁剪。从 Resizer 的代码开始
http://web.archive.org/web/20140304090029/http://code.google.com:80/p/fjcore/source/browse/trunk/FJCore/Resize/ImageResizer.cs?
和 FilterNNResize——你可以看到图像数据是如何存储的——它只是简单的像素数组。
重要的部分是:
for (int y = 0; y < _newHeight; y++)
{
i_sY = (int)sY; sX = 0;
UpdateProgress((double)y / _newHeight);
for (int x = 0; x < _newWidth; x++)
{
i_sX = (int)sX;
_destinationData[0][x, y] = _sourceData[0][i_sX, i_sY];
if (_color) {
_destinationData[1][x, y] = _sourceData[1][i_sX, i_sY];
_destinationData[2][x, y] = _sourceData[2][i_sX, i_sY];
}
sX += xStep;
}
sY += yStep;
}
向您展示了数据存储在一个颜色平面数组中(1 个元素用于 8bpp 灰色,3 个元素用于颜色),并且每个元素都有一个用于图像的二维字节数组(x,y)。
您只需要遍历目标像素,然后从源中的适当位置复制。
编辑:别忘了把补丁提供给 fjcore 的作者