Pillow
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
22int
23ImagingSaveRaw(Imaging im, FILE *fp) {
24int x, y, i;
25
26if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) {
27/* @PIL227: FIXME: for mode "1", map != 0 to 255 */
28
29/* PGM "L" */
30for (y = 0; y < im->ysize; y++) {
31fwrite(im->image[y], 1, im->xsize, fp);
32}
33
34} else {
35/* PPM "RGB" or other internal format */
36for (y = 0; y < im->ysize; y++) {
37for (x = i = 0; x < im->xsize; x++, i += im->pixelsize) {
38fwrite(im->image[y] + i, 1, im->bands, fp);
39}
40}
41}
42
43return 1;
44}
45
46int
47ImagingSavePPM(Imaging im, const char *outfile) {
48FILE *fp;
49
50if (!im) {
51(void)ImagingError_ValueError(NULL);
52return 0;
53}
54
55fp = fopen(outfile, "wb");
56if (!fp) {
57(void)ImagingError_OSError();
58return 0;
59}
60
61if (strcmp(im->mode, "1") == 0 || strcmp(im->mode, "L") == 0) {
62/* Write "PGM" */
63fprintf(fp, "P5\n%d %d\n255\n", im->xsize, im->ysize);
64} else if (strcmp(im->mode, "RGB") == 0) {
65/* Write "PPM" */
66fprintf(fp, "P6\n%d %d\n255\n", im->xsize, im->ysize);
67} else {
68fclose(fp);
69(void)ImagingError_ModeError();
70return 0;
71}
72
73ImagingSaveRaw(im, fp);
74
75fclose(fp);
76
77return 1;
78}
79