写一个管理Svg图片的灰度处理类

本文介绍了如何使用C++和Qt库创建一个管理SVG图片的灰度处理类。类包括了图片灰度化的方法,通过灰度值映射和透明度调整实现图片的灰显效果。同时,类提供了加载SVG图片、转换为灰度图以及创建图标的功能。
摘要由CSDN通过智能技术生成

先给普及一下

一:灰度图

灰度图就是黑白图,整幅图片只有不同程度的黑白两色。灰度也可认为是亮度,简单的说就是色彩的深浅程度 ,

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值