Pillow

Форк
0
78 строк · 1.7 Кб
1
/*
2
 * The Python Imaging Library
3
 * $Id$
4
 *
5
 * built-in image file handling
6
 *
7
 * history:
8
 * 1995-11-26 fl  Created, supports PGM/PPM
9
 * 1996-08-07 fl  Write "1" images as PGM
10
 * 1999-02-21 fl  Don't write non-standard modes
11
 *
12
 * Copyright (c) 1997-99 by Secret Labs AB.
13
 * Copyright (c) 1995-96 by Fredrik Lundh.
14
 *
15
 * See the README file for information on usage and redistribution.
16
 */
17

18
#include "Imaging.h"
19

20
#include <ctype.h>
21

22
int
23
ImagingSaveRaw(Imaging im, FILE *fp) {
24
    int x, y, i;
25

26
    if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) {
27
        /* @PIL227: FIXME: for mode "1", map != 0 to 255 */
28

29
        /* PGM "L" */
30
        for (y = 0; y < im->ysize; y++) {
31
            fwrite(im->image[y], 1, im->xsize, fp);
32
        }
33

34
    } else {
35
        /* PPM "RGB" or other internal format */
36
        for (y = 0; y < im->ysize; y++) {
37
            for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) {
38
                fwrite(im->image[y] + i, 1, im->bands, fp);
39
            }
40
        }
41
    }
42

43
    return 1;
44
}
45

46
int
47
ImagingSavePPM(Imaging im, const char *outfile) {
48
    FILE *fp;
49

50
    if (!im) {
51
        (void)ImagingError_ValueError(NULL);
52
        return 0;
53
    }
54

55
    fp = fopen(outfile, "wb");
56
    if (!fp) {
57
        (void)ImagingError_OSError();
58
        return 0;
59
    }
60

61
    if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) {
62
        /* Write "PGM" */
63
        fprintf(fp, "P5\n%d %d\n255\n", im->xsize, im->ysize);
64
    } else if (strcmp(im->mode, "RGB") == 0) {
65
        /* Write "PPM" */
66
        fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize);
67
    } else {
68
        fclose(fp);
69
        (void)ImagingError_ModeError();
70
        return 0;
71
    }
72

73
    ImagingSaveRaw(im, fp);
74

75
    fclose(fp);
76

77
    return 1;
78
}
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.