Редактировать: Второй пример кода - правильный ответ. Моя проблема была вне ротации растрового изображения, поэтому второй пример кода - это ответ на вопрос в заголовке.Поверните растровое изображение, сохраненное в массиве 1D
Я пытаюсь повернуть растровое изображение, сохраненное в массиве 1D (_pixelData). Я просто не могу заставить его работать. Может ли кто-нибудь указать мне в правильном направлении или дать примерное решение.
Изображение 320 × 240 пикселей и хранится в 1D массиве (первые 320 значений представляют собой первую строку в растровом изображении, следующую 320 следующую строку и т. Д.).
Я не хочу писать его на writebitmap, чтобы повернуть его туда и преобразовать его в массив int. Я хочу использовать массив int. Причина этого в том, что источник поступает из камеры как данные ARGB, и я хочу сохранить это просто.
Вот что у меня (не работает. В результате сломана изображение, где вертикальные линии не встречаются)
// Rotate the data for Portait Mode
int height = 320;
int width = 240;
int[] _pixelDataRotated = new int[width* height];
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
_pixelDataRotated[x * height + height - y - 1] = _pixelData[x + y * width];
}
Это, как я сделал это, и это делает для вращение. Это ответ.
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
_pixelDataRotated[y + x * height] = _pixelData[x + y * width];
Не могли бы вы привести пример (исходный результат)? «Поворот» может означать много чего. –
@ScottHunter Забыл добавить, что я пытаюсь повернуть его на 90 градусов (точно). – Hardev
При повороте изображения 320x240 изображение становится 240x320; вы приняли это во внимание? –