【问题标题】:Load QPixmap from QByteArray in Qt?在 Qt 中从 QByteArray 加载 QPixmap?
【发布时间】:2011-10-13 04:34:51
【问题描述】:

我有一个包含图像内容的字节数组(png/bmp 或其他格式)。

如何将其加载到 QPixmap 中?

【问题讨论】:

    标签: c++ qt qpixmap qbytearray


    【解决方案1】:

    您应该使用以下内容,其中您的字节位于 imageData 变量中,格式由最后一个参数指定:

    QPixmap pixmap = QPixmap::fromImage(
        QImage(
            (unsigned char *) imageData, 
            image_width, 
            image_height, 
            QImage::Format_RGB888
        )
    );
    

    【讨论】:

    • 没错,你可以找到答案here
    【解决方案2】:
    bool QPixmap::loadFromData ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
    

    这里的格式是字符串文字,如@9​​87654322@ 或类似的东西

    QPixmap p;
    QByteArray pData;
    // fill array with image
    if(p.loadFromData(pData,"PNG"))
    {
       // do something with pixmap
    }
    

    【讨论】:

    • @raive : 你能添加一个简单的例子吗?
    • 字节* pData; QByteArray pArray; pArray.append((const char*) pData); m_pixmap.loadFromData(pArray,"PNG"); m_pixmap.save((QString("./Test.png"), "PNG"));我正在使用此代码,但它似乎无法正常工作。
    • 嗯,这取决于您在 pdata 中的内容。代码正确。
    • 我看到你的另外两个问题 - 关于 QByteArray 和关于非 gui 线程......可能存在问题。您收到的答案是正确的 - 使用 QImage 并为从字节加载的数据提供大小*
    【解决方案3】:

    使用这个构造函数:

    QImage ( const uchar * data, int width, int height, Format format )
    

    Here is more info。之后,您可以使用QPixmap.convertFromImage() 创建像素图。

    【讨论】:

    • 我想从字节数组转换为图像,但 QImage 将第一个参数作为 const uchar* 而不是字节数组)
    • uchar 是一个字节。只需使用演员表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多