如何导入和缩放导入的图像?

时间:2017-04-21 22:49:22

标签: c++ qt

我有那个代码,我想从计算机导入图像并将其缩放到600x600。你能帮我怎么做吗?

QStringList nameFile = QFileDialog::getOpenFileNames(this,tr("Open file"),"C:\\",tr("JPG/PNG files (*.jpg; *.png);;All files (*.*)") );
if(!nameFile.isEmpty())
{
    for (int i=0;i<nameFile.count();i++)
    {
        string path = nameFile.at(i).toStdString();;
        ui->listImages->addItem(nameFile.at(i));
        temp = new QImage(600,600,QImage::Format_RGB32);
        temp -> load(QString().fromStdString(path));
        pic.push_back(temp);
    }
}

2 个答案:

答案 0 :(得分:0)

试试这段代码。 这对我有用。

//CREATE AN IMAGE OBJECT
QImage *img = new QImage(); 

//LOAD THE SOURCE IMAGE
bool value = img->load(QString("C:\\Users\\XXXXXX\\Desktop\\test.png"));

//SCALE THE IMAGE
QImage newImage  = img->scaled(600, 600);

//USE IT
newImage.save("C:\\Users\\XXXXXX\\Desktop\\test1234.png");

由于我不知道代码中某些变量的类型, 大概你的代码可能如下所示(非常粗糙......很多你必须要小心)

QStringList nameFile = QFileDialog::getOpenFileNames(this,tr("Open file"),"C:\\",tr("JPG/PNG files (*.jpg; *.png);;All files (*.*)") );
if(!nameFile.isEmpty())
{
    for (int i=0;i<nameFile.count();i++)
    {
        QString path = nameFile.at(i);
        ui->listImages->addItem(nameFile.at(i));


        //Do IT HERE
        QImage img;
        bool value = img.load(path );
        QImage newImage  = img.scaled(600, 600);


        pic.push_back(newImage);
    }
}

答案 1 :(得分:-2)

请查看QImage:transformed以获得完全控制权,否则QImage::scaledToWidth可以更轻松地完成控制。