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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: низкое качество печати картинок  (Прочитано 7413 раз)
bebabo
Гость
« : Февраль 12, 2009, 23:08 »

всем привет!
такая проблема - нужно загрузить с диска и распечатать растровое изображение в несколько меньшем формате. при печати - как в pdf так и на принтер - качество получается низким. особенно это заметно, если распечатываю не фотографию, а график, который состоит из линий и текста. на выходе все получается размытым.
никак не получается побороть эту беду.
вот код
Код:
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPrintDialog printDialog(&printer, this);

QPainter painter(&printer);

QRect rect = painter.viewport();
QSize size(590,840);
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(),
                        size.width(), size.height());
painter.setWindow(0,0,590,840);

painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.begin();
QImage img;
img.load("test.jpg");
img = img.scaled(520,450, Qt::KeepAspectRatio, Qt::SmoothTransformation);
painter.drawImage(0, 0, img);
painter.end();
Записан
BRE
Гость
« Ответ #1 : Февраль 12, 2009, 23:37 »

Ты картинку маштабируешь, а какой у нее исходный размер?
Записан
bebabo
Гость
« Ответ #2 : Февраль 12, 2009, 23:43 »

Ты картинку маштабируешь, а какой у нее исходный размер?
больше, чем тот, в который масштабирую
Записан
BRE
Гость
« Ответ #3 : Февраль 13, 2009, 12:42 »

Код:
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPrintDialog printDialog(&printer, this);

QPainter painter(&printer);

QRect rect = painter.viewport();
QSize size(590,840);
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(),
                        size.width(), size.height());
painter.setWindow(0,0,590,840);

//<<<<<<
qDebug() << "Viewport:" << painter.viewport();
// <<<<<<

painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.begin();
QImage img;
img.load("test.jpg");
img = img.scaled(520,450, Qt::KeepAspectRatio, Qt::SmoothTransformation);
painter.drawImage(0, 0, img);
painter.end();
Измени свой код и посмотри, что он выводит.
Ты уменьшаешь картинку test.jpg до размеров 520x450 и результат растягиваешь, в моем случаем, на 9117x12980.

Записан
ритт
Гость
« Ответ #4 : Февраль 13, 2009, 12:46 »

> в моем случае, на 9117x12980.

вот бы монитор с таким разрешением! Улыбающийся
Записан
BRE
Гость
« Ответ #5 : Февраль 13, 2009, 12:48 »

> в моем случае, на 9117x12980.

вот бы монитор с таким разрешением! Улыбающийся
Отдал кучу денег, но не жалею.  Веселый
Записан
bebabo
Гость
« Ответ #6 : Февраль 14, 2009, 19:43 »

спасибо! разобрался - не учел разрешение
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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