MCPcopy Create free account
hub / github.com/DentonW/DevIL / iNeuQuant

Function iNeuQuant

DevIL/src-IL/src/il_neuquant.cpp:399–462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

397
398
399ILimage *iNeuQuant(ILimage *Image, ILuint NumCols)
400{
401 ILimage *TempImage, *NewImage;
402 ILuint sample, i, j;
403
404 netsizethink=NumCols;
405
406 NewImage = iCurImage;
407 iCurImage = Image;
408 TempImage = iConvertImage(iCurImage, IL_BGR, IL_UNSIGNED_BYTE);
409 iCurImage = NewImage;
410 sample = ilGetInteger(IL_NEU_QUANT_SAMPLE);
411
412 if (TempImage == NULL)
413 return NULL;
414
415 initnet(TempImage->Data, TempImage->SizeOfData, sample);
416 learn();
417 unbiasnet();
418
419 NewImage = (ILimage*)icalloc(sizeof(ILimage), 1);
420 if (NewImage == NULL) {
421 ilCloseImage(TempImage);
422 return NULL;
423 }
424 NewImage->Data = (ILubyte*)ialloc(TempImage->SizeOfData / 3);
425 if (NewImage->Data == NULL) {
426 ilCloseImage(TempImage);
427 ifree(NewImage);
428 return NULL;
429 }
430 ilCopyImageAttr(NewImage, Image);
431 NewImage->Bpp = 1;
432 NewImage->Bps = Image->Width;
433 NewImage->SizeOfPlane = NewImage->Bps * Image->Height;
434 NewImage->SizeOfData = NewImage->SizeOfPlane;
435 NewImage->Format = IL_COLOUR_INDEX;
436 NewImage->Type = IL_UNSIGNED_BYTE;
437
438 NewImage->Pal.PalSize = netsizethink * 3;
439 NewImage->Pal.PalType = IL_PAL_BGR24;
440 NewImage->Pal.Palette = (ILubyte*)ialloc(256*3);
441 if (NewImage->Pal.Palette == NULL) {
442 ilCloseImage(TempImage);
443 ilCloseImage(NewImage);
444 return NULL;
445 }
446
447 for (i = 0, j = 0; i < (unsigned)netsizethink; i++, j += 3) {
448 NewImage->Pal.Palette[j ] = network[i][0];
449 NewImage->Pal.Palette[j+1] = network[i][1];
450 NewImage->Pal.Palette[j+2] = network[i][2];
451 }
452
453 inxbuild();
454 for (i = 0, j = 0; j < TempImage->SizeOfData; i++, j += 3) {
455 NewImage->Data[i] = inxsearch(
456 TempImage->Data[j], TempImage->Data[j+1], TempImage->Data[j+2]);

Callers 2

ILAPIENTRY iConvertImageFunction · 0.85
iSaveWbmpInternalFunction · 0.85

Calls 7

initnetFunction · 0.85
learnFunction · 0.85
unbiasnetFunction · 0.85
ilCloseImageFunction · 0.85
ilCopyImageAttrFunction · 0.85
inxbuildFunction · 0.85
inxsearchFunction · 0.85

Tested by

no test coverage detected