У меня есть программа C ++, которая читает в файл изображения, имеет дело с заголовком, а затем сохраняет данные цвета изображения в указателе на указатель символов
unsigned char** pixelData = new unsigned char*[header.width*header.height];
for(int i=0;i<header.width*header.height;i++)
pixelData[i] = new unsigned char[bytes2read]; //bytes2read is 3(rgb) or 4(rgba)
Если бы я хотел затем изменить масштаб изображения до половины его первоначального размера, как я мог это сделать? Кто-нибудь знает удобный алгоритм для этого?
Как насчет использования OpenGL. Это почти тривиально, чтобы сделать с OpenGL, и лучшая часть заключается в том, что работа ускоряется с помощью графического процессора.
Самая простая вещь, которая даст хорошие результаты, — это просто усреднить значения R, G, B каждого квадрата 2×2 пикселей.
Обычно вы применяете фильтр к изображению, чтобы определить новое значение для каждого выходного пикселя. Среднее значение — это то, что называется блочным фильтром с шириной 2. Есть и другие фильтры, которые вы можете использовать, которые будут давать лучшие или худшие результаты, но среднее значение — это то, с чего я бы начал.