zero size image bugfix

This commit is contained in:
2025-05-19 15:26:35 -04:00
parent 3f52ddcfa1
commit 00afdc4f8a
12 changed files with 22 additions and 2 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+16 -1
View File
@@ -90,6 +90,21 @@ AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _siz
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);
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];
}
free(imgptr->data);
if(imgptr->data != NULL) {free(imgptr->data); imgptr->data = NULL; }
imgptr->data = newdata;
imgptr->sizex = _sizex;
imgptr->sizey = _sizey;
+5
View File
@@ -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_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(&img2);
+1 -1
View File
@@ -5,7 +5,7 @@ int main(int argc, char* argv[])
{
int ret = 0;
//amscimglib4_test_init();
amscimglib4_test_init();
amscimglib4_test_loadsave();
return ret;