コード例 #1
0
int main(int argc, char *argv[])
{
	char *input_image;
	char whynot[256];
	int i, width, height, has_alpha;

	if (argc < 2)
		usage();

	for (i = 0; i < 6; i++) {
		char inputfilename[PATH_MAX], outputfilename[PATH_MAX];
		if (strlen(argv[1]) > PATH_MAX - 20) {
			fprintf(stderr, "Length of argv[1] is too long, buster.\n");
			return 1;
		}
		sprintf(inputfilename, "%s%d.png", argv[1], i);
		sprintf(outputfilename, "%s-masked%d.png", argv[1], i);
		printf("Processing %s -> %s\n", inputfilename, outputfilename);
		input_image = png_utils_read_png_image(inputfilename, 0, 0, 0,
						&width, &height, &has_alpha, whynot, sizeof(whynot));
		if (!input_image) {
			fprintf(stderr, "png_utils_read_png_image: %s: %s -- skipping.\n", inputfilename, whynot);
			continue;
		}
		if (!has_alpha) {
			fprintf(stderr, "%s does not have an alpha channel, skipping\n", inputfilename);
			continue;
		}
		level_to_alpha(input_image, width, height);
		if (png_utils_write_png_image(outputfilename, (unsigned char *) input_image, width, height, 1, 0) != 0)
			fprintf(stderr, "Failed to save image %s\n", outputfilename);
		free(input_image);
	}
	return 0;
}
コード例 #2
0
static char *load_image(const char *filename, int *w, int *h, int *a, int *bytes_per_row)
{
	char *i;
	char msg[100];

	i = png_utils_read_png_image(filename, 0, 0, 0, w, h, a, msg, sizeof(msg));
	if (!i) {
		fprintf(stderr, "%s: cannot load image: %s\n", filename, msg);
		exit(1);
	}
	*bytes_per_row = *w * 3;
	/* align to 4 byte boundary */
	if (*bytes_per_row & 0x03)
		*bytes_per_row += 4 - (*bytes_per_row & 0x03);
	return i;
}