Я пытался это сделать, но я не могу понять математику правильно.
Что ж, было бы намного лучше, если бы вместо этого получилось , что . Вы на самом деле только что создали XY-проблему ...
Соответствующие функции доступа могут выглядеть следующим образом:
unsigned char* getPixel(unsigned int row, unsigend int column)
{
return array + (row * width + column) * 4;
}
unsigned char* getSubPixel(unsigned int row, unsigend int column, unsigned int color)
{
return getPixel(row, column) + color;
}
Я хочу перевернуть буфер вось y
Предполагая, что вы хотите создать новое изображение, отраженное по оси x, вы можете просто
std::swap(*getSubPixel(x, y, 0), *getSubPixel(x, width - y, 0))
// same for the other three sub-pixels
// if you decide to return references instead of pointers, you don't need
// to dereference (can skip the asterisks)
для каждого пикселя в половине отстрока (должна быть наполовину, иначе вы бы поменяли местами все значения дважды, что снова привело бы к идентичному изображению) и для каждой строки.