设为首页 加入收藏

TOP

通过QT将二维数组中的像素点显示成一张图片
2014-11-24 07:15:04 来源: 作者: 【 】 浏览:0
Tags:通过 二维数 像素 显示 成一张 图片

从文件42.train读入一个长度为dstSize*dstSize字节数据,存到一个数组psData中,这些数据全部是像素点的值,不包括文件头等辅助信息.通过qt创建一个gui工程,基类选择QWidegt,将图片显示出来。


代码如下:


#include "widget.h"
#include "ui_widget.h"
#include
#include
typedef unsigned short WORD;
typedef unsigned char BYTE;
typedef unsigned int DWORD;
const int dstSize = 128;


Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}


Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *e)
{
QPainter paint(this);
FILE *pf = NULL;
const char * name = "42.train";
DWORD wsize = dstSize * dstSize;
BYTE * psData = (BYTE*)malloc(wsize);
if( (pf = fopen(name, "rb" )) == NULL )
{
printf( "File coulkd not be opened " );
return ;
}
DWORD *pSrc = (DWORD*)malloc(wsize*sizeof(DWORD));
int n = fread(psData, wsize, 1, pf);
if( n== 1)
{
for (unsigned int i = 0; i < wsize; ++i)
{
BYTE *pb=(BYTE *)(pSrc+i);
pSrc[i] = 0;
pb[0] = psData[i];
pb[1] = psData[i];
pb[2] = psData[i];
}
free(psData);
}


QByteArray imageByteArray = QByteArray( (const char*)pSrc, wsize*4 );
uchar* transData = (unsigned char*)imageByteArray.data();
QImage image = QImage(transData, dstSize, dstSize, QImage::Format_RGB32);
free(pSrc);
fclose(pf);
paint.drawImage(QPoint(0, 0), image);
paint.end();
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中两种单例模式小结 下一篇在 Go 语言中处理 Unicode

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)