public byte[] CropImage(byte[] bmp, Rectangle cropSize, int stride)
{
//make a new byte array the size of the area of cropped image
int totalSize = cropSize.Width * 3 * cropSize.Height;
int totalLength = bmp.Length;
int startingPoint = (stride * cropSize.Y) + cropSize.X * 3;
byte[] croppedImg = new byte[totalSize];
//for the total size of the old array
for(int y = 0; y<totalLength; y+= stride)
{
//copy a row of pixels from bmp to croppedImg
Array.Copy(bmp, startingPoint + y, croppedImg, y, cropSize.Width*3);
}
return croppedImg;
}
Array.Copy
пропускается и не копируется.C# копирование байтовой матрицы пропускается через
Я думал, что я ошибся, но даже при копировании каждого байта вручную он делает то же самое.
Эта функция принимает необработанный массив байтов изображений BGR [] и обрезает его на основе Rect (x, y, width, height).
И наконец, возвращая отрезанный массив байтов к основной функции.
Что означает «пропущен»? Пробовали ли вы установить контрольные точки, пройти через код и проверить свои переменные? – CodeCaster
Проблема, скорее всего, связана с логикой копирования изображений, а не с 'Array.Copy'. Что представляет параметр 'stride'? –
Кроме того, почему вы делаете эту логику вручную? Я почти уверен, что в рамках платформы .NET есть API-интерфейсы для выполнения этой работы. –