2013-11-14 3 views
0

Я пытаюсь прочитать рабочий файл 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); 
.... 
..... 
} 

ответ

0

можно передать переменную с именем «образ» в decompress_jpeg, но прочитать файл в формате JPEG в «image_jpeg».

+0

oops, это была опечатка, но это не проблема .. ошибка идет только с image_jpeg .. – user2809633

+0

Ну, остальное, что вы делаете, выглядит хорошо для меня. (Хотя я не знал о fmemopen, и я бы, вероятно, использовал для этого специальный источник.) –

+0

@VincentPovirk ['fmemopen()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen .html). Относительно новая функция. –

Смежные вопросы