static int ReadPicture(const char* const filename, WebPPicture* const pic, int keep_alpha, Metadata* const metadata) { int ok = 0; FILE* in_file = fopen(filename, "rb"); if (in_file == NULL) { fprintf(stderr, "Error! Cannot open input file '%s'\n", filename); return ok; } if (pic->width == 0 || pic->height == 0) { // If no size specified, try to decode it as PNG/JPEG (as appropriate). const InputFileFormat format = GetImageType(in_file); if (format == PNG_) { ok = ReadPNG(in_file, pic, keep_alpha, metadata); } else if (format == JPEG_) { ok = ReadJPEG(in_file, pic, metadata); } else if (format == TIFF_) { ok = ReadTIFF(filename, pic, keep_alpha, metadata); } else if (format == WEBP_) { ok = ReadWebP(filename, pic, keep_alpha, metadata); } } else { // If image size is specified, infer it as YUV format. ok = ReadYUV(in_file, pic); } if (!ok) { fprintf(stderr, "Error! Could not process file %s\n", filename); } fclose(in_file); return ok; }
static int ReadPicture(const char* const filename, WebPPicture* const pic, int keep_alpha, Metadata* const metadata) { int ok; if (pic->width != 0 && pic->height != 0) { // If image size is specified, infer it as YUV format. FILE* in_file = fopen(filename, "rb"); if (in_file == NULL) { fprintf(stderr, "Error! Cannot open input file '%s'\n", filename); return 0; } ok = ReadYUV(in_file, pic); fclose(in_file); } else { // If no size specified, try to decode it using WIC. ok = ReadPictureWithWIC(filename, pic, keep_alpha, metadata); } if (!ok) { fprintf(stderr, "Error! Could not process file %s\n", filename); } return ok; }