Russian Qt Forum
Ноябрь 23, 2024, 21:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Редактирование изображения QImage  (Прочитано 4608 раз)
jatsuk
Гость
« : Сентябрь 16, 2011, 09:26 »

Есть bmp 256 цветов
Открываю его, считываю каждый пиксель (так надо)

Код:
QImage image(fileName);
 for (int i=0; i<height_im; i++)
 for (int j=0; j<width_im; j++)
 {
 QRgb rgb = image.pixel(i, j);
 red[i][j] = qRed( rgb );
 green[i][j] = qGreen( rgb );
 blue[i][j] = qBlue( rgb );

Получаю 3 массива с отдельно R G B. Далее выполняю какие либо преобразования с этим масивом...

Вопрос как это вернуть в первоначальный вид (из R G B получить QRgb) это надо, чтобы сохранить  второе, уже измененое изображение.
Второй вопрос как это изображение создать (старое надо сохранить, а то его везде заменяют и всё). Я так понял через  image2.setPixel(nX+1,nY+1,color);, но как задать размер для нового и т.д.
Записан
jatsuk
Гость
« Ответ #1 : Сентябрь 16, 2011, 09:29 »

Незнаю правильно ли
QRgb tc = QColor( 111, 111, 111 ).toRgb(); Непонимающий

Компилятор говорит , что так нельзя конвертить
« Последнее редактирование: Сентябрь 16, 2011, 09:32 от jatsuk » Записан
Ubuntu_linux
Гость
« Ответ #2 : Сентябрь 17, 2011, 00:52 »

setRed, setGreen, setBlue

очень просто сохранять QImage
Записан
jatsuk
Гость
« Ответ #3 : Сентябрь 17, 2011, 06:59 »

спс, но это в данном случае не очень удобно...

вот как я сделал

Код:
int r=red[i][j];
 int g=green[i][j];
 int b=blue[i][j] ;

 tc= qRgb (r,g,b);
 image2.setPixel(i, j, tc);

 }

 QString fileNamesave = QFileDialog::getSaveFileName(
                 this,
             tr("Сохранить изображение"),
                 QDir::currentPath(),
                 tr("BMP Files (*.bmp)") );

 bool saved = image2.save(fileNamesave, "BMP");
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 20.