#pragma execution_character_set("utf-8")
#include <QtCore/QCoreApplication>
#include <QImage>
#include <QRgb>
#include <QVector>
#include <QFile>
#include <QDir>
#include <QFileInfo>
#include <QDebug>
#include <Windows.h>
bool isPixFit(QRgb color1, QRgb color2)
{
int deltaR = qAbs<int>(qRed(color1) - qRed(color2));
int deltaG = qAbs<int>(qGreen(color1) - qGreen(color2));
int deltaB = qAbs<int>(qBlue(color1) - qBlue(color2));
if (deltaR < 0x10 && deltaG < 0x10 && deltaB < 0x10)
return TRUE;
return FALSE;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDir dir("C:\\Users\\16481\\Desktop\\pt");
for (size_t i = 0; i < dir.count(); i++) {
QString fileFull = dir[i]; // 文件全称
QFileInfo fileInfo(dir, fileFull);
QString fileSuffix = fileInfo.suffix();
if (fileSuffix == "bmp") {
QImage img(dir.absoluteFilePath(fileFull));
QRgb rgb = QRgb(0x7fb0b3);
// 把相似的颜色统一改为0x7fb0b3
for (int x = 0; x < img.width(); x++) {
for (int y = 0; y < img.height(); y++) {
if (isPixFit(img.pixel(x, y), rgb)) {
img.setPixel(x, y, rgb);
}
}
}
// 把图片4个角也改为0x7fb0b3,使之被视为透明图
img.setPixel(0, 0, rgb);
img.setPixel(0, img.width() - 1, rgb);
img.setPixel(img.height() - 1, 0, rgb);
img.setPixel(img.height() - 1, img.width() - 1, rgb);
// 保存文件
img.save(dir.absoluteFilePath(fileFull));
qDebug() << fileFull + QString(" process finished!");
}
}
return a.exec();
}