Я пытаюсь прочитать рабочий файл JPEG с библиотекой jpeg-6b с оберткой, созданной вокруг этой библиотеки.Не файл JPEG: начинается с 0x00 0x00
Когда у меня есть динамическое изображение, оно работает правильно, но когда я пытаюсь поместить одно статическое изображение в виде файла, оно не работает и показывает эту ошибку как не файл JPEG: начинается с 0x00 0x00 и преждевременного завершения файл. Я не уверен, где проблема, но я думаю, что проблема заключается в указателе изображения, который я передаю. Но я пытаюсь прочитать значения указателя, он печатает правильные значения, как в файле JPEG.
Вот фрагмент кода
char *image_jpeg;
char *entries;
FILE *fd;
fd = fopen("abc.jpg", "r");
fseek(fd, 0, SEEK_END);
file_size = ftell(fd);
rewind(fd);
image_jpeg = malloc(sizeof(char) * file_size);
fread(image_jpeg, file_size, 1, fd);
printf("file_size %d",file_size);
fclose(fd);
printf("%x\n", image_jpeg[0] & 0xff);
printf("%x\n", image_jpeg[1] & 0xff);
printf("%x\n", image_jpeg[2] & 0xff);
printf("%x\n", image_jpeg[3] & 0xff);
decompress_jpeg(&image_raw, &size_raw, &width, &height, &bpp, image_jpeg, file_size,jpeg_frac);
Вот фрагмент кода функции распаковывать, который хорошо работает с данными динамических изображений с тем же Func вызовом.
int decompress_jpeg(char **dest,
int *size,
int *width,
int *height,
int *bpp,
char *src,
int src_size,
int frac)
{
FILE *in = fmemopen(src, src_size, "rb");
JSAMPLE **buff;
int bytespp;
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
if (frac != 1 && frac != 2 && frac != 4) {
frac = 1;
// THODO warning
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, in);
jpeg_read_header(&cinfo, TRUE);
....
.....
}
oops, это была опечатка, но это не проблема .. ошибка идет только с image_jpeg .. – user2809633
Ну, остальное, что вы делаете, выглядит хорошо для меня. (Хотя я не знал о fmemopen, и я бы, вероятно, использовал для этого специальный источник.) –
@VincentPovirk ['fmemopen()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen .html). Относительно новая функция. –