Qt:按像素切割图片
等分切割:Qt:图片切割-CSDN博客
有些图片不是等分的,需要特殊处理
:分隔按像素切割
if (!lineEdit->text().contains(":")) {......
} else {QStringList SL = lineEdit->text().split(":");int x=0, y=0;for (int i=0; i<SL.length(); i++) {QImage image;if (comboBox->currentIndex() == 0) {bool b;int dy = SL.at(i).toInt(&b, 10);if (b) {image = imageWidget->image.copy(0, y, imageWidget->image.width(), dy);y += dy;} else {QMessageBox::critical(dialog, "错误", QString::number(i) + ":" + SL.at(i) + " 不是数字");break;}} else if (comboBox->currentIndex() == 1) {bool b;int dx = SL.at(i).toInt(&b, 10);if (b) {image = imageWidget->image.copy(x, 0, dx, imageWidget->image.height());x += dx;} else {QMessageBox::critical(dialog, "错误", QString::number(i) + ":" + SL.at(i) + " 不是数字");break;}}QString fp = "";if (path == "")fp = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/" + comboBox->currentText() + QString::number(i) + ".png";elsefp = QFileInfo(path).path() + "/" + QFileInfo(filename).baseName() + comboBox->currentText() + QString::number(i) + "." + QFileInfo(filename).suffix();image.save(fp, nullptr, 100);label->setText("像素切割:" + comboBox->currentText() + " " + QString::number(i+1) + "/" + QString::number(SL.length()));}settings.setValue("Slice", lineEdit->text());
}