您的位置:首页 > 游戏 > 手游 > 南通房产网_公司运营管理方案_百度优化软件_电商软文广告经典案例

南通房产网_公司运营管理方案_百度优化软件_电商软文广告经典案例

2024/11/17 16:09:22 来源:https://blog.csdn.net/qq_48597462/article/details/142870158  浏览:    关键词:南通房产网_公司运营管理方案_百度优化软件_电商软文广告经典案例
南通房产网_公司运营管理方案_百度优化软件_电商软文广告经典案例

目录

一.Base64

1.编码原理

2.应用场景

3.优点

4.限制

5.变种

二.文字与Base64互转

1.ui设计

2.文字转Base64

3.Base64转文字

三.图片与Base64互转

1.ui设计

2.选择图片与图片路径

3.图片转Base64

4.Base64转图片

四.清空设置

五.效果

六.代码

base64convert.h

base64convert.cpp

base64.h

base64.cpp


一.Base64

Base64是一种基于64个可打印字符来表示二进制数据的编码方法。

1.编码原理

Base64编码通过将二进制数据每三个字节分为一组,每个字节8位,共24位。然后将这24位划分为四组,每组6位。由于6位二进制可以表示64种不同的状态(2^6=64),因此可以用64个字符来表示这些状态。标准的Base64编码表包括大写字母A-Z、小写字母a-z、数字0-9以及“+”和“/”,有时还使用“=”作为填充字符。

2.应用场景

Base64广泛应用于网络传输中,特别是在电子邮件、网页传输、数据存储等领域。它使得二进制数据可以通过文本协议安全传输,同时保持数据的完整性。

3.优点

Base64编码可以将二进制数据转换为文本形式,方便在不支持二进制数据的系统中传输和存储。同时,Base64编码后的数据可以在文本协议中安全传输,不会被误解析。

4.限制

Base64编码会导致数据膨胀,因为每3个字节的二进制数据会被编码为4个字符,增加了约33%的数据大小。Base64编码不是加密算法,不能用于保护敏感信息。如果需要保护信息安全,应该使用专门的加密技术。

5.变种

为了满足不同的应用需求,Base64有多种变种,如URL安全的Base64、Base64url等,它们通过替换某些特殊字符来避免在特定环境下的问题。

二.文字与Base64互转

1.ui设计

1拖动Label控件,分别输入文字与Base64标签;

2.拖动QLineEdit控件,设置objectName分别为Text与Text64;

3.拖动QPushButton控件,设置objectName分别为TextToBase64与Base64ToText;

2.文字转Base64

1.获取输入框Text中的数据

2.判断是否为空,为空直接返回

3.将text作为参数传递,并将返回的结果存储在名为resultQString变量中

4.将转换结果在Text64控件中显示

5.将传过来的text值进行文字转换成Base64值后返回

3.Base64转文字

1.获取输入框Text64中的数据

2.判断是否为空,为空直接返回

3.将text作为参数传递,并将返回的结果存储在名为resultQString变量中

4.将转换结果在Text控件中显示

5.将传过来的text值进行Base64转换成文字后返回

三.图片与Base64互转

1.ui设计

1拖动Label控件,分别输入图片,图片路径,Base64,Image;

2.拖动QLineEdit控件,设置objectName为Image64;

3.拖动QPushButton控件,设置objectName分别为SelectImage,ImageTo64Base,Clear,Base64ToImage;

2.选择图片与图片路径

1.选择一个符合指定格式(PNG、BMP或JPG)的图片文件。选择的文件路径将被存储在名为ImageNameQString变量中

2.如果选择的图片不为空,则将选择图片路径在ImagePath中显示

3.创建一个QPixmap对象,用于加载和显示图片

4.将图片缩放到与界面上的一个标签(假设名为Image)相同的大小,同时保持图片的纵横比不变。

3.图片转Base64

1.获取ImagePath中保存的图片路径

2.判断是否为空,为空直接返回

3.将image作为参数传递,并将返回的结果存储在名为text的QString变量中

4.将转换结果在Image64控件中显示

5.将传过来的image数据转换为Base64后返回

4.Base64转图片

1.获取Image64中保存的Base64数据

2.判断是否为空,为空直接返回

3.将data作为参数传递

4.将转换结果在Image控件中显示

5.将传过来的data数据转换后返回

四.清空设置

将所有控件中的值全部清空

五.效果

六.代码

base64convert.h

#ifndef BASE64CONVERT_H
#define BASE64CONVERT_H#include <QWidget>
#include <QFileDialog>
#include "base64.h"namespace Ui {
class Base64Convert;
}class Base64Convert : public QWidget
{Q_OBJECTpublic:explicit Base64Convert(QWidget *parent = 0);~Base64Convert();private slots:void on_TextToBase64_clicked();void on_Base64ToText_clicked();void on_SelectImage_clicked();void on_ImageTo64Base_clicked();void on_Base64ToImage_clicked();void on_Clear_clicked();private:Ui::Base64Convert *ui;
};#endif // BASE64CONVERT_H

base64convert.cpp

#include "base64convert.h"
#include "ui_base64convert.h"
#include <QImage>
#include <QThread>
#include "mythread.h"Base64Convert::Base64Convert(QWidget *parent) :QWidget(parent),ui(new Ui::Base64Convert)
{ui->setupUi(this);
}Base64Convert::~Base64Convert()
{delete ui;
}void Base64Convert::on_TextToBase64_clicked()
{QString text = ui->Text->text().trimmed();if(text.isEmpty()){return;}QString result = base64::TextTo64(text);ui->Text64->setText(result);
}void Base64Convert::on_Base64ToText_clicked()
{QString text = ui->Text64->text().trimmed();if(text.isEmpty()){return;}QString result = base64::Base64ToText(text);ui->Text->setText(result);
}void Base64Convert::on_SelectImage_clicked()
{QString ImageName = QFileDialog::getOpenFileName(this, "选择文件", "", "图片(*.png *.bmp *.jpg)");if(!ImageName.isEmpty()){ui->ImagePath->setText(ImageName);QPixmap pix(ImageName);pix = pix.scaled(ui->Image->size() , Qt::KeepAspectRatio);\ui->Image->setPixmap(pix);}
}void Base64Convert::on_ImageTo64Base_clicked()
{QString ImageName = ui->ImagePath->text().trimmed();if(ImageName.isEmpty()){return;}QImage image(ImageName);QString text = base64::ImageToBase64(image);ui->Image64->setText(text);
}void Base64Convert::on_Base64ToImage_clicked()
{QString ImageName = ui->ImagePath->text().trimmed();QString data = ui->Image64->toPlainText().trimmed();if(data.isEmpty()){return;}QImage image = base64::TransferBase64(data);QPixmap pix = QPixmap::fromImage(image);pix = pix.scaled(ui->Image->size() , Qt::KeepAspectRatio);ui->Image->setPixmap(pix);
}void Base64Convert::on_Clear_clicked()
{ui->Text->clear();ui->Text64->clear();ui->Image->clear();ui->Image64->clear();ui->ImagePath->clear();
}

base64.h

#ifndef BASE64_H
#define BASE64_H#include <QObject>
#include <QImage>class base64
{
public:base64();static  QString TextTo64(const QString &text);static  QString Base64ToText(const QString &text);static QString TransferImage(const QImage &image);static QByteArray ImageToBase64(const QImage &image);static QImage TransferBase64(const QString &data);static QImage Base64ToImage(const QByteArray &data);};#endif // BASE64_H

base64.cpp

#include "base64.h"
#include <QByteArray>
#include <QBuffer>
#include <QDebug>
base64::base64()
{}QString base64::TextTo64(const QString &text)
{return QString(text.toUtf8().toBase64());
}QString base64::Base64ToText(const QString &text)
{return QString(QByteArray::fromBase64(text.toUtf8()));
}QString base64::TransferImage(const QImage &image)
{return QString(ImageToBase64(image));
}QByteArray base64::ImageToBase64(const QImage &image)
{QByteArray data;QBuffer buffer(&data);image.save(&buffer, "JPG");data = data.toBase64();return data;
}QImage base64::TransferBase64(const QString &data)
{return Base64ToImage(data.toUtf8());
}QImage base64::Base64ToImage(const QByteArray &data)
{QImage image;image.loadFromData(QByteArray::fromBase64(data));return image;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com