【发布时间】:2013-10-02 09:10:55
【问题描述】:
我有一个图像(它是一个 Sprite),我将它存储在一个字节数组中。
我想只提取与此字节数组中特定位置和大小相关的字节,以便创建新图像,基本上是裁剪。
我正在使用 C# 和紧凑的 cf。我可以使用获取像素并将每个值保存到一个字节数组中,然后“读取”我感兴趣的部分。我知道我可以使用LockBitmap() 来加快速度。我通常会使用Aforge 和/或Emgu,但正如我所说,我使用的是紧凑型 cf 框架 2。
我会对任何已知的方法感兴趣。
谢谢
附加。
按照下面的链接,我想知道这段迭代代码是否有替代方案(如缓冲区副本)?
//Iterate the selected area of the original image, and the full area of the new image
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width * BPP; j += BPP)
{
int origIndex = (startX * rawOriginal.Stride) + (i * rawOriginal.Stride) + (startY * BPP) + (j);
int croppedIndex = (i * width * BPP) + (j);
//copy data: once for each channel
for (int k = 0; k < BPP; k++)
{
croppedBytes[croppedIndex + k] = origBytes[origIndex + k];
}
}
}
【问题讨论】:
-
@Vaibs_Cool 您好,感谢您的链接。昨晚我确实看过,但返回的图像是黑白的。我搞砸了像素格式,但收到一个错误,说只读。显然昨晚很累,因为我只是做了一个简单的复制和粘贴,它就可以了。所以,我想我有点厚。你应该得到一个“打勾”,因为你让我重新审视它。谢谢