1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
void acquisition()
{
FILE* file;
int width,height,depth,lenght;
char fic[15];
unsigned char * buffer;
struct stat buf;
FIMEMORY *hmem = NULL;
BYTE * mem_buffer=NULL;
DWORD original_size=(width*height*depth/3)*sizeof(BYTE);
DWORD compressed_size;
compressed_size=(DWORD)((double)original_size+ (0.1* (double)original_size) +12);
buffer=GrabVideo(&video,&width,&height,&depth);
if(buffer!=NULL)
{
// open and allocate a memory stream
hmem = FreeImage_OpenMemory(0,0);
// save the image to a memory stream
FreeImage_SaveToMemory(FIF_JPEG, (FIBITMAP *)buffer, hmem, JPEG_DEFAULT);
FreeImage_Unload((FIBITMAP *)buffer);
// get the buffer from the memory stream
BYTE *mem_buffer = NULL;
DWORD size_in_bytes = 0;
FreeImage_AcquireMemory(hmem, &mem_buffer, &size_in_bytes);
// save the buffer to a file stream
FILE *stream = fopen("buffer.jpeg", "wb");
if(stream) {
fwrite(mem_buffer, sizeof(BYTE), size_in_bytes, stream);
fclose(stream);
}
// close and free the memory stream
FreeImage_CloseMemory(hmem);
envoiepacket((int)compressed_size,(char*)buffer);
}
else
printf("erreur grabbing\n");
CloseVideo(&video);
exit(0);
}la foncion grab video renvoie une chaine unsigne char * |
Partager