Exemple #1
0
bool saveBmp(const Bitmap<float> &bitmap, const char *filename) {
    FILE *file = fopen(filename, "wb");
    if (!file)
        return false;

    int paddedWidth;
    writeBmpHeader(file, bitmap.width(), bitmap.height(), paddedWidth);

    const uint8_t padding[4] = { };
    for (int y = 0; y < bitmap.height(); ++y) {
        for (int x = 0; x < bitmap.width(); ++x) {
            uint8_t px = (uint8_t) clamp(int(bitmap(x, y)*0x100), 0xff);
            fwrite(&px, sizeof(uint8_t), 1, file);
            fwrite(&px, sizeof(uint8_t), 1, file);
            fwrite(&px, sizeof(uint8_t), 1, file);
        }
        fwrite(padding, 1, paddedWidth-3*bitmap.width(), file);
    }

    return !fclose(file);
}
Exemple #2
0
bool saveBmp(const Bitmap<FloatRGB> &bitmap, const char *filename) {
    FILE *file = fopen(filename, "wb");
    if (!file)
        return false;

    int paddedWidth;
    writeBmpHeader(file, bitmap.width(), bitmap.height(), paddedWidth);

    const uint8_t padding[4] = { };
    for (int y = 0; y < bitmap.height(); ++y) {
        for (int x = 0; x < bitmap.width(); ++x) {
            uint8_t bgr[3] = {
                (uint8_t) clamp(int(bitmap(x, y).b*0xFF), 0xff),
                (uint8_t) clamp(int(bitmap(x, y).g*0xFF), 0xff),
                (uint8_t) clamp(int(bitmap(x, y).r*0xFF), 0xff)
            };
            fwrite(bgr, sizeof(uint8_t), 3, file);
        }
        fwrite(padding, 1, paddedWidth-3*bitmap.width(), file);
    }

    return !fclose(file);
}