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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QImage scale не точное  (Прочитано 3336 раз)
anv
Гость
« : Июнь 13, 2013, 13:20 »

Привет.Есть изображение 100*100 пикс. Масштабирую его:
Код:
img2=image.scaled(QSize(3000,3000),Qt::KeepAspectRatio);

и на каждом его пикселе расставляю, в новом,увеличенном img2, номер цвета:
Код:
for (int i = 0; i < image.width(); i++)
            {
                for (int j = 0; j < image.height(); j++)
                {
                    pos_text.append(QPoint(int(i*30+15),int(j*30+15)));

                    if (image.pixel(i,j) == color1)
                    {
                       
                      num_color1++;
                       
                      pixtext.append("1");

                    }

Все нормально номера расставляются, но чем дальше от начала, тем больше  смещение от середины клеточки, и по x и по у. Т.е. получается , что во время масштабирования и прпорционального изменения координат происходит расхождение.Как можно избежать смещения, что бы номера расставлялись точно по середине каждой клетки.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Июнь 13, 2013, 16:03 »

Нужно больше параметров!
Записан
anv
Гость
« Ответ #2 : Июнь 13, 2013, 18:50 »

Извиняюсь,невнятно объяснил...

У меня картинка 100*100 пикс(1пикс=1см) сделаная в фотошопе 8 цветная. Я  расставляю в каждом пикселе номер цвета(1,2,...),по центру пикселя и увеличиваю.
 Мои действия:я прохожу циклом каждый пиксель и полученные координаты загоняю в QVector, увеличивая их (i*30+15) . Затем делаю еще один QImage и масштабирую его в 30 раз т.е.3000*3000.
В итоге большая картинка должна выглядеть как в примере в QImage - изображение из квадратов в центре каждого маленькая цифра - номер цвета. Но у меня почему то цифры смещаются, причем не равномерно,а чем дальше от начала координат тем больше. Т.е как будто к каждой коордтнате прибавляется ее номер умноженный на какое то маленькое значение.

***********************

Все починилось:) Вмесото image.scale сделал так:
Код:
QRectF target(0.0, 0.0, 3000.0, 3000.0);
    QRectF source(0.0, 0.0, 100.0, 100.0);
    painter.drawImage(target,img2,source);
« Последнее редактирование: Июнь 13, 2013, 20:35 от anv » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июнь 18, 2013, 00:17 »

Я к тому, что у имадж скейла есть еще 1 параметр, отвечающий за качество.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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