crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> [РЕШЕНО] Объединение изображений QPixMap, Объдинение нескольких изображений в одно
JuryS1806
  опции профиля:
сообщение 21.6.2010, 1:15
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Всем доброго времени суток.
Прошу помочь разобраться с использованием QPainter'a. А именно я хочу понять, как можно объединить несколько изображений, пусть даже одинаковых.
QPixmap originalPixmap = QPixmap::grabWindow(winId());

QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);

tp.drawPixmap(0, 0, 895, 573,originalPixmap);
tp.drawPixmap(895, 0, 895, 573,originalPixmap);
tp.drawPixmap(0, 573, 895, 573,originalPixmap);
tp.drawPixmap(895, 573, 895, 573,originalPixmap);
tp.end();
t.save(theFile, "bmp");

При сохранении изображения размером 1790*1146 получается снова 895*573. И что не так никак не пойму.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 21.6.2010, 8:49
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


проверяй что-то еще, к примеру theFile

у меня данный код работает именно так, как должен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 21.6.2010, 20:32
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Спасибо за участие в обсуждении проблемы. Но нет ! почему-то создается Image размером с PixMap и все тут!
я если честно уже заводил такую тему раньше. пытаюсь сохранить окно GL-виджета в высоком разрешении и этот код мне просто необходим, а то как то вывод в мелком разрешении даже несерьезно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 21.6.2010, 20:59
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2901
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


JuryS1806, в таких случаях от автора топика нужен небольшой прикреплённый проектик, в котором проблема точно есть. Иначе гадать можно долго :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 21.6.2010, 21:10
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


блин у меня 108 мб исходников, а не 300 кб

ну а к примеру если я в QImage загружу картинку, неужели это сработает ! ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 21.6.2010, 21:14
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2901
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(JuryS1806 @ 22.6.2010, 0:10) *
блин у меня 108 мб исходников, а не 300 кб

создай новый проект и скопируй туда участочек кода с глюком. Будет в зипе от силы 1 кб :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JuryS1806
  опции профиля:
сообщение 21.6.2010, 22:27
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Еще раз хочу сказать спасибо ufna !

Вот в чем была проблема:
    if ( !ext.compare("bmp") )
     {
        /*
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        //originalPixmap.save(theFile, "bmp");
QImage t1 = originalPixmap.toImage();
t1.save(theFile,"bmp");

QImage t2(theFile);

QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);
tp.drawImage(895, 573,t2);
tp.drawImage(0, 0,t2);
tp.drawImage(0, 573,t2);
tp.drawImage(895, 0,t2);

t.save(theFile,"bmp");
*/
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        //originalPixmap.save("/tmp/1.bmp", "bmp");

//QImage t1("/tmp/1.bmp");
        QImage t1 = originalPixmap.toImage();
QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);
tp.drawImage(895, 573,t1);
tp.drawImage(0, 0,t1);
tp.drawImage(0, 573,t1);
tp.drawImage(895, 0,t1);

t.save("/tmp/2.bmp","bmp");

     }

    if ( !ext.compare("bmp") )
     {
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        originalPixmap.save(theFile, "bmp");
     }


Т.е. я два раза делал сохранение в один и тот же формат и естественно второй раз переписывал удачное сохранение.
Сорри , топик можно закрыть !
Спасибо за помощь !
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2020, 13:59