问题:
最近用qt写的程序加载PNG格式的图片时会有“libpng warning: iCCP: known incorrect sRGB profile”的警告
在网上看到了解决方法就是用QImage加载一下然后再保存就行了,但是没有对应的代码,所以今天就自己写了一下
//是同名100%保存
//工程地址:http://download.csdn.net/detail/lbb2016/9659052
下面贴上源码
#include "dialog.h"
#include "ui_dialog.h"
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
img =new QImage;
}
Dialog::~Dialog()
{
delete img;
delete ui;
}
void Dialog::on_pushButton_Judge_clicked()
{
QString imgPath;
imgPath=QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files(*.jpg *.png)"));
img->load(imgPath);
ui->label_img->setPixmap(QPixmap::fromImage(*img));
ImgJudge(img);
}
void Dialog::ImgJudge(QImage *img)
{
int countC=0,countT=0;
QImage scaledImg;
scaledImg=img->scaled(40,80, Qt::IgnoreAspectRatio);
QRgb *colorC;
QRgb *colorT;
colorC=(QRgb *)scaledImg.scanLine(25);
colorT=(QRgb *)scaledImg.scanLine(55);
for(int i=0;i150&&qGreen(colorC[i])<150&&qBlue(colorC[i])<150)
countC++;
if(qRed(colorT[i])>150&&qGreen(colorT[i])<150&&qBlue(colorT[i])<150)
countT++;
}
if(countC>30&&countT>30){
ui->label_CResult->setText("1");
ui->label_TResult->setText("1");
}
else if(countT>30){
ui->label_CResult->setText("0");
ui->label_TResult->setText("1");
}
else if(countC>30){
ui->label_CResult->setText("1");
ui->label_TResult->setText("0");
}
else{
ui->label_CResult->setText("0");
ui->label_TResult->setText("0");
}
}