我有那个代码,我想从计算机导入图像并将其缩放到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);
}
}
答案 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
可以更轻松地完成控制。