如何使用Qt4打印成PNG格式
How to print to PNG format with Qt4
我很难使用Qt4将图像打印成PNG格式。下面的代码有PDF或PS的默认设置,但无法选择PNG:
void DetectorView::printToFile()
{
// A basic printing function
QPrinter printer;
QPrintDialog dialog(&printer, this);
if (dialog.exec()==QDialog::Accepted) {
QPainter painter(&printer);
this->render(&painter);
std::cout << "INFO [DetectorView::printToFile] Wrote file " << std::endl;
}
else {
std::cout << "INFO [DetectorView::printToFile] Cancelling printer " << std::endl;
}
}
任何帮助都将不胜感激!
使用此链接:将QWidget渲染到QImage会丢失alpha通道,您可以将小部件渲染到QImage。
然后,使用QImageWriter,您可以将其保存到png:
// render QWidget to QImage:
QImage bitmap(this->size(), QImage::Format_ARGB32);
bitmap.fill(Qt::transparent);
QPainter painter(&bitmap);
this->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
// save QImage to png file:
QImageWriter writer("file.png", "png");
writer.write(bitmap);
注意:提供的链接适用于Qt5,但这应该适用于Qt4。
使用jpo38的答案,我进行了扩展以获得我想要的行为:
void DetectorView::printToFile()
{
QString default_name = "myImage.png";
QImage bitmap(this->size(), QImage::Format_ARGB32);
QPainter painter(&bitmap);
this->render(&painter,QPoint(),QRegion(),QWidget::DrawChildren);
QString filename = QFileDialog::getSaveFileName(this, tr("Save File"),QDir::homePath()+"/"+default_name,tr("Image Files (*.png *.jpg *.bmp)"));
QImageWriter writer(filename, "png");
writer.write(bitmap);
std::cout << "INFO [DetectorView::printToFile] Wrote image to file" << std::endl;
}
请注意创建交互式窗口所需的QFileDialog。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- 询问在设计我的手臂模拟器功能表示格式1
- 如何启用libMagick++以保存.png文件格式
- 如何将 2d 数组转换为 svg 或 png 格式的数独图像?
- 如何使用我的C程序将PDF转换为图像格式(jpeg,png,..)
- 使用PNG格式
- 如何使用Qt4打印成PNG格式
- 将(文本文件)转换为任何格式的图像(png)C++
- PNG图像纹理格式的颜色类型3
- c++位图资源(RT_BITMAP)和PNG图像格式