zoukankan      html  css  js  c++  java
  • 文件数据通过qt将二维数组中的像素点显示成一张图片

    首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责

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

        

        每日一道理
    青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。
    #include "widget.h"
    #include "ui_widget.h"
    #include <QPainter>
    #include <cstdio>
    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();
    }

    文章结束给大家分享下程序员的一些笑话语录: 开发时间
      项目经理: 如果我再给你一个人,那可以什么时候可以完工?程序员: 3个月吧!项目经理: 那给两个呢?程序员: 1个月吧!
    项目经理: 那100呢?程序员: 1年吧!
    项目经理: 那10000呢?程序员: 那我将永远无法完成任务.

    --------------------------------- 原创文章 By 文件和数据 ---------------------------------

  • 相关阅读:
    算法的时间与空间复杂度(一看就懂)
    技术人更应该学会即兴表达
    架构设计之「数据库集群方案」
    架构设计之「数据库从主备到主主的高可用方案」
    网络中的「动态路由算法」,你了解吗?
    当你「ping 一下」的时候,你知道它背后的逻辑吗?
    不懂高性能的负载均衡设计?没关系,架构师带你飞
    piwik流量统计系统搭建(apache2.4+piwik+mysql5.6+php5.6.14)
    SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
    CAS 实现单点登录 .NET MVC
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3095817.html
Copyright © 2011-2022 走看看