示例#1
0
/*!
    Creates an ImageHeader from the given \a resource.
*/
ImageHeader ImageHeader::fromImageResource(const ImageResource &resource)
{
    ImageHeader result;
    if (resource.isNull())
        return result;

    result.setType(resource.type());

    switch (resource.type()) {
    case ImageResource::Type::Image:
        result.setWidth(resource.image().width());
        result.setHeight(resource.image().height());
        result.setDepth(1);
        result.setImageFormat(resource.image().format());
        break;
    case ImageResource::Type::CubeTexture:
        result.setWidth(resource.cubeTexture().width());
        result.setHeight(resource.cubeTexture().height());
        result.setDepth(resource.cubeTexture().depth());
        result.setImageFormat(resource.cubeTexture().format());
        break;
    case ImageResource::Type::VolumeTexture:
        result.setWidth(resource.volumeTexture().width());
        result.setHeight(resource.volumeTexture().height());
        result.setDepth(resource.volumeTexture().depth());
        result.setImageFormat(resource.volumeTexture().format());
        break;
    default:
        break;
    }

    return result;
}
示例#2
0
int main(int argc, char *argv[])
{
    ImageIO reader("texture.dds");
    const auto result = reader.read();

    // if (!result.first) ...

    const auto &contents = result.second;
    for (int index = 0; index < contents.header().imageCount(); ++index) { // read array
        for (int level = 0; level < contents.header().mipmapCount(); ++level) { // read mipmaps
            ImageResource resource = contents.resource(index, level);
            if (resource.type() == ImageResource::Type::Image) {
                const QImage image = resource.image();
                // ...
            } else if (resource.type() == ImageResource::Type::CubeTexture) {
                CubeTexture texture = resource.cubeTexture();
                // ...
            } else if (resource.type() == ImageResource::Type::VolumeTexture) {
                VolumeTexture texture = resource.volumeTexture();
                // ...
            }
        }
    }

    ImageExifMeta exif = contents.exifMeta();
    if (!exif.isEmpty()) {
        // ...
    }

    return 0;
}