Esempio n. 1
0
// ImageIO Function Definitions
std::unique_ptr<RGBSpectrum[]> ReadImage(const std::string &name,
                                         Point2i *resolution) {
    if (name.size() >= 5) {
        size_t suffixOffset = name.size() - 4;
        if (!strcmp(name.c_str() + suffixOffset, ".exr") ||
            !strcmp(name.c_str() + suffixOffset, ".EXR"))
            return std::unique_ptr<RGBSpectrum[]>(
                ReadImageEXR(name, &resolution->x, &resolution->y));
        if (!strcmp(name.c_str() + suffixOffset, ".tga") ||
            !strcmp(name.c_str() + suffixOffset, ".TGA"))
            return std::unique_ptr<RGBSpectrum[]>(
                ReadImageTGA(name, &resolution->x, &resolution->y));
        if (!strcmp(name.c_str() + suffixOffset, ".pfm") ||
            !strcmp(name.c_str() + suffixOffset, ".PFM"))
            return std::unique_ptr<RGBSpectrum[]>(
                ReadImagePFM(name, &resolution->x, &resolution->y));
    }
    Error(
        "Unable to load image stored in format \"%s\" for filename \"%s\". "
        "Returning a constant grey image instead.",
        strrchr(name.c_str(), '.') ? (strrchr(name.c_str(), '.') + 1)
                                   : "(unknown)",
        name.c_str());
    RGBSpectrum *ret = new RGBSpectrum[1];
    ret[0] = RGBSpectrum(0.5f);
    resolution->x = resolution->y = 1;
    return std::unique_ptr<RGBSpectrum[]>(ret);
}
Esempio n. 2
0
// ImageIO Function Definitions
std::unique_ptr<RGBSpectrum[]> ReadImage(const std::string &name,
        Point2i *resolution) {
    if (HasExtension(name, ".exr"))
        return std::unique_ptr<RGBSpectrum[]>(
                   ReadImageEXR(name, &resolution->x, &resolution->y));
    else if (HasExtension(name, ".tga"))
        return std::unique_ptr<RGBSpectrum[]>(
                   ReadImageTGA(name, &resolution->x, &resolution->y));
    else if (HasExtension(name, ".pfm"))
        return std::unique_ptr<RGBSpectrum[]>(
                   ReadImagePFM(name, &resolution->x, &resolution->y));
    Error(
        "Unable to load image stored in format \"%s\" for filename \"%s\". "
        "Returning a constant gray image instead.",
        strrchr(name.c_str(), '.') ? (strrchr(name.c_str(), '.') + 1)
        : "(unknown)",
        name.c_str());
    RGBSpectrum *ret = new RGBSpectrum[1];
    ret[0] = RGBSpectrum(0.5f);
    resolution->x = resolution->y = 1;
    return std::unique_ptr<RGBSpectrum[]>(ret);
}