Russian Qt Forum

Qt => Печать => Тема начата: bebabo от Февраль 12, 2009, 23:08



Название: низкое качество печати картинок
Отправлено: 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();


Название: Re: низкое качество печати картинок
Отправлено: BRE от Февраль 12, 2009, 23:37
Ты картинку маштабируешь, а какой у нее исходный размер?


Название: Re: низкое качество печати картинок
Отправлено: bebabo от Февраль 12, 2009, 23:43
Ты картинку маштабируешь, а какой у нее исходный размер?
больше, чем тот, в который масштабирую


Название: Re: низкое качество печати картинок
Отправлено: BRE от Февраль 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.



Название: Re: низкое качество печати картинок
Отправлено: ритт от Февраль 13, 2009, 12:46
> в моем случае, на 9117x12980.

вот бы монитор с таким разрешением! :)


Название: Re: низкое качество печати картинок
Отправлено: BRE от Февраль 13, 2009, 12:48
> в моем случае, на 9117x12980.

вот бы монитор с таким разрешением! :)
Отдал кучу денег, но не жалею.  :D


Название: Re: низкое качество печати картинок
Отправлено: bebabo от Февраль 14, 2009, 19:43
спасибо! разобрался - не учел разрешение