赞
踩
由于Qt新版本对png文件的检测比较严格,所以有了 libpng warning: iCCP: known incorrect sRGB profile 的提醒,我的解决办法是写一个程序直接转换掉,就可以去掉对应的提醒。
源码如下:
ChangePNG.cpp
- #include "ChangePNG.h"
- #include "ui_ChangePNG.h"
-
- #include <QFile>
- #include <QFileDialog>
- #include <QDebug>
-
- ChangePNG::ChangePNG(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::ChangePNG)
- {
- ui->setupUi(this);
-
- creatAction();
- menuAddAction();
- toolBarAddAction();
- }
-
- void ChangePNG::creatAction()
- {
- //打开文件的Action
- m_openFileAction = new QAction(this);
- m_openFileAction->setText("打开");
- m_openFileAction->setStatusTip("打开文件");
- m_openFileAction->setIcon(QIcon(":/picture/images/document-open.png"));
- connect(m_openFileAction, SIGNAL(triggered(bool)), this, SLOT(openFile()));
-
- //保存文件的Action
- m_saveFileAction = new QAction(this);
- m_saveFileAction->setText("保存");
- m_saveFileAction->setStatusTip("保存文件");
- m_saveFileAction->setIcon(QIcon(":/picture/images/document-save.png"));
- //另外一种连接信号和槽的方法
- connect(m_saveFileAction, &QAction::triggered, this, &ChangePNG::saveFile);
- }
-
- void ChangePNG::menuAddAction()
- {
- menu = new QMenu("文件");
- menu->addAction(m_openFileAction);
- menu->addAction(m_saveFileAction);
- ui->menuBar->addMenu(menu);
- }
-
- void ChangePNG::toolBarAddAction()
- {
- ui->mainToolBar->addAction(m_openFileAction);
- ui->mainToolBar->addAction(m_saveFileAction);
- }
-
-
- void ChangePNG::openFile()
- {
- QStringList fileList = QFileDialog::getOpenFileNames(this,
- tr("选择要转换的PNG格式的图片"),
- tr(""),
- "image(*.png)");
-
- QStringList::iterator it = fileList.begin();
-
- QPixmap pixmap;
- QFile file;
-
- QString oldFileString = NULL;
- QString newFileString = NULL;
-
- while(it != fileList.end()) //把所有的文件遍历一遍
- {
- file.setFileName(*it);
- QFileInfo fileinfo(file.fileName());
- QString filename(fileinfo.fileName()); //获取文件名称
- QString fileAbsoluteDir(fileinfo.absolutePath()); //绝对路径
- QString newName = filename;
-
- oldFileString.append(newName+tr("\n"));
-
- newName.replace(newName.length()-4, 4, tr("old.png")); //重新设定文件要修改文件的名字
-
- newFileString.append(newName+tr("\n"));
-
- newName = fileAbsoluteDir+tr("/")+newName; //计算新文件的绝对路径
-
- if(file.rename(*it, newName)) //修改文件的名字防止冲突
- {
- pixmap.load(newName); //设定要加载图片的绝对路径
- file.setFileName(*it); //以旧的文件名字来命名新生成的
-
- file.open(QIODevice::WriteOnly); //以写的方式打开该文件
- pixmap.save(&file, "PNG"); //以png格式保存文件
- file.close(); //关闭文件
- }
- else
- {
- qDebug()<<"修改文件名失败!";
- }
-
- ui->oldFile_textEdit->setText(oldFileString);
- ui->newFile_textEdit->setText(newFileString);
-
- it++;
- }
- }
-
- void ChangePNG::saveFile()
- {
- }
-
- ChangePNG::~ChangePNG()
- {
- delete ui;
- }
-

ChangePNG.h
- #ifndef CHANGEPNG_H
- #define CHANGEPNG_H
-
- #include <QMainWindow>
-
- namespace Ui {
- class ChangePNG;
- }
-
- class ChangePNG : public QMainWindow
- {
- Q_OBJECT
-
- public:
- explicit ChangePNG(QWidget *parent = 0);
- ~ChangePNG();
-
- private:
- void creatAction();
- void menuAddAction();
- void toolBarAddAction();
-
- private:
- QMenu* menu;
- QAction* m_openFileAction;
- QAction* m_saveFileAction;
-
- private slots:
- void openFile();
- void saveFile();
-
- private:
- Ui::ChangePNG *ui;
- };
-
- #endif // CHANGEPNG_H

源码:https://download.csdn.net/download/duxingheiying1041/10421180
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。