如何在c中打开几个jpg图像?

时间:2023-09-15 21:18
| 更新: 谢谢您的帮助,我知道了!我应该在使用时增加i
        putc(input_char, output_file);
        input_char = chars[i+1];
        putc(input_char, output_file);
        input_char = chars[i+2];
        putc(input_char, output_file);
        input_char = chars[i+3];
        putc(input_char, output_file);
我有一个包含几个jpeg图像的文件。我需要将每个图像放在单独的文件中。我已经将给定的文件放入:
unsigned char* chars;
我等于
chars = (unsigned char*) malloc (sizeof(unsigned char)*count+1);
(count是总字节数) 这是我代码的很大一部分。在尝试浏览整个文件之前,我试图只使一张图像工作。我以为这样可以,但是我无法获得图像。我得到一个名为image.jpg的文件,其中有很多字节,但是没有图片。似乎文件的开头是错误的,但是我不确定。任何建议或技巧将不胜感激。提前致谢。
FILE* output_file;
unsigned char input_char;


for(i=0; i <=count-3 && flag2==0; i++)
{
    input_char = chars[i];
    if ((chars[i] == 0xff ) && 
        (chars[i+1] == 0xd8) && 
        (chars[i+2] == 0xff) && 
        (chars[i+3] == 0xe0))
    {
        if (flag==1) {
            puts(\"closing file I\");
            fclose(output_file);
            puts(\"closed I\");
            flag2 = 1;
            break;
        }

        pictures++;
        puts(\"New pic! I\");
        puts(\"Opening file I!\");
        output_file = fopen(\"image.jpg\", \"wb\");
        putc(input_char, output_file);
        input_char = chars[i+1];
        putc(input_char, output_file);
        input_char = chars[i+2];
        putc(input_char, output_file);
        input_char = chars[i+3];
        putc(input_char, output_file);

        flag = 1;//there is at least one image, so it will need to be closed
    }
    else if ((chars[i] == 0xff) && 
             (chars[i+1] == 0xd8) && 
             (chars[i+2] == 0xff) && 
             (chars[i+3] == 0xe1))
    {
        if (flag==1) {
            puts(\"closing file II\");
            fclose(output_file);
            puts(\"closed II\");
            flag2 = 1;
            break;
        }

        pictures++;
        puts(\"New pic II!\");
        puts(\"Opening file! II\");
        output_file = fopen(\"Image.jpg\", \"wb\");
        putc(input_char, output_file);
        input_char = chars[i+1];
        putc(input_char, output_file);
        input_char = chars[i+2];
        putc(input_char, output_file);
        input_char = chars[i+3];
        putc(input_char, output_file);

        flag = 1;//there is at least one image, so it will need to be closed
    }
    else
    {
        if (flag==1) //There is an image opened
        {
            putc(input_char, output_file);
        }
    }                
}

Copyright© 黑海资讯

鄂ICP备2023014923号