zero size image bugfix

master
Aaron 2 weeks ago
parent 3f52ddcfa1
commit 00afdc4f8a

Binary file not shown.

Binary file not shown.

@ -90,6 +90,21 @@ AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _siz
return amscimglib4_failure; return amscimglib4_failure;
} }
//handle zero size images
if(_sizex<0) _sizex = 0;
if(_sizey<0) _sizey = 0;
if(_sizex == 0 || _sizey == 0)
{
imgptr->sizex = 0;
imgptr->sizey = 0;
if(imgptr->data != NULL)
{
free(imgptr->data);
imgptr->data = NULL;
}
return amscimglib4_success;
}
newdata = (unsigned char*) malloc(sizeof(unsigned char)*4*_sizex*_sizey); newdata = (unsigned char*) malloc(sizeof(unsigned char)*4*_sizex*_sizey);
if(newdata==NULL) if(newdata==NULL)
{ {
@ -109,7 +124,7 @@ AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _siz
newdata[4*(I+_sizex*J)+K] = imgptr->data[4*(I+imgptr->sizex*J)+K]; newdata[4*(I+_sizex*J)+K] = imgptr->data[4*(I+imgptr->sizex*J)+K];
} }
free(imgptr->data); if(imgptr->data != NULL) {free(imgptr->data); imgptr->data = NULL; }
imgptr->data = newdata; imgptr->data = newdata;
imgptr->sizex = _sizex; imgptr->sizex = _sizex;
imgptr->sizey = _sizey; imgptr->sizey = _sizey;

@ -19,6 +19,11 @@ void amscimglib4_test_init()
res = amscimglib4_image_resize(img1,500,500); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey); res = amscimglib4_image_resize(img1,500,500); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey);
res = amscimglib4_image_copy(img2,img1); printf("res=%d, img2=(%d,%d), img1=(%d,%d)\n",res, img2->sizex,img2->sizey,img1->sizex,img1->sizey); res = amscimglib4_image_copy(img2,img1); printf("res=%d, img2=(%d,%d), img1=(%d,%d)\n",res, img2->sizex,img2->sizey,img1->sizex,img1->sizey);
res = amscimglib4_image_resize(img1,-10,3); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey);
res = amscimglib4_image_resize(img1,0,0); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey);
res = amscimglib4_image_copy(img2,img1); printf("res=%d, img2=(%d,%d), img1=(%d,%d)\n",res, img2->sizex,img2->sizey,img1->sizex,img1->sizey);
amscimglib4_image_delete(&img1); amscimglib4_image_delete(&img1);
amscimglib4_image_delete(&img2); amscimglib4_image_delete(&img2);

@ -5,7 +5,7 @@ int main(int argc, char* argv[])
{ {
int ret = 0; int ret = 0;
//amscimglib4_test_init(); amscimglib4_test_init();
amscimglib4_test_loadsave(); amscimglib4_test_loadsave();
return ret; return ret;

Loading…
Cancel
Save