先给普及一下
一:灰度图
灰度图就是黑白图,整幅图片只有不同程度的黑白两色。灰度也可认为是亮度,简单的说就是色彩的深浅程度 ,
1:如果我们用八位来存储灰度图。则共有256种组合。那相当于:我们把从:纯黑 到 纯白 之间区分成了256种灰度。从而对应256种灰度值! 而如果用一个数字来表示的话:则0-255每个数字对应一种灰度!
2:灰度就是没有色彩,它的RGB色彩分量全部相等。 比如 rgb(25,25,25)。 既然这样:我们完全可以用rgb中的某一个分量的值 来代替这个实际的灰度值! 比如上边这个例子:我们完全可以用25来代替这个灰度! 这是一个一一映射关系!
#pragma once
#include <QtCore/qglobal.h>
#include <QPainter>
#include <QSvgRenderer>
#include <QIcon>
#include <QPixmap>
#include <memory>
struct Calac
{
int coefficient; // 预留参数值
uchar reds[256], greens[256], blues[256]; // 灰度值映射
};
typedef std::shared_ptr<Calac> CalacPtr;
struct GrayInfo
{
QColor gColor; // 主窗体的背景颜色
qreal qAlphaReal; // 灰显的透明度比例
CalacPtr calacPtr
};
typedef std::shared_ptr<GrayInfo> GrayInfoPtr;
class ManagementSvgRenderer
{
public:
ManagermentSvgRenderer();
ManagermentSvgRenderer(QString sfileName);
~ManagermentSvgRenderer();
void loadPicture(QString sPictureName);
QSize defaultSize();
QPixmap RendererToPixmap(QSize pixMapSize = QSize(0, 0), QSizeF svgSizeF = QSizeF(0, 0), Qt::AlignmentFlag flag = Qt::AlignCenter);
QIcon RendererToIcon(QSize iconSize = QSize(0, 0), QSizeF svgSizeF = QSizeF(0, 0), Qt::AlignmentFlag flag = Qt::AlignCenter);
// 图片灰显参数初始化函数
GrayInfoPtr initGrayParm(QColor backgroundColor, qreal qqAlphaReal)
//处理图片的灰度
QPixmap CreateDisabledPixmap(const QString& file);
QPixmap CreateDisabledPixmap(const QPixmap& originPixmap);
QImage CreateDisabledQImage(const QImage& originImage);
bool IsSvgPicture(QString sImageNam