diff --git a/amscppimglib4.code-workspace b/amscppimglib4.code-workspace index 3bdb77a..a092f43 100644 --- a/amscppimglib4.code-workspace +++ b/amscppimglib4.code-workspace @@ -3,9 +3,6 @@ { "path": "." }, - { - "path": "../../sourceprojs23/amsimglib3" - }, { "path": "../amscimglib4" }, diff --git a/build/__pycache__/amsbuildlib4.cpython-311.pyc b/build/__pycache__/amsbuildlib4.cpython-311.pyc new file mode 100644 index 0000000..3347bd6 Binary files /dev/null and b/build/__pycache__/amsbuildlib4.cpython-311.pyc differ diff --git a/build_linux64/libamscimglib4.linux64.a b/build_linux64/libamscimglib4.linux64.a index cdfd001..f0080c0 100644 Binary files a/build_linux64/libamscimglib4.linux64.a and b/build_linux64/libamscimglib4.linux64.a differ diff --git a/build_linux64/libamscimglib4.linux64.so b/build_linux64/libamscimglib4.linux64.so index 6500a61..ed50d8b 100644 Binary files a/build_linux64/libamscimglib4.linux64.so and b/build_linux64/libamscimglib4.linux64.so differ diff --git a/build_linux64/libamscppimglib4.linux64.a b/build_linux64/libamscppimglib4.linux64.a index 7de2975..943a468 100644 Binary files a/build_linux64/libamscppimglib4.linux64.a and b/build_linux64/libamscppimglib4.linux64.a differ diff --git a/build_linux64/objstore/amscppimglib4_intlutil.o b/build_linux64/objstore/amscppimglib4_intlutil.o index d92de8e..dad9012 100644 Binary files a/build_linux64/objstore/amscppimglib4_intlutil.o and b/build_linux64/objstore/amscppimglib4_intlutil.o differ diff --git a/build_linux64/objstore/amscppimglib4_pngbytes.o b/build_linux64/objstore/amscppimglib4_pngbytes.o new file mode 100644 index 0000000..7fca8c5 Binary files /dev/null and b/build_linux64/objstore/amscppimglib4_pngbytes.o differ diff --git a/build_linux64/tests b/build_linux64/tests index cbfb7b5..d112ef3 100644 Binary files a/build_linux64/tests and b/build_linux64/tests differ diff --git a/build_mingw64/libamscimglib4.winx64.dll b/build_mingw64/libamscimglib4.winx64.dll index 3392d85..4cc87b2 100644 Binary files a/build_mingw64/libamscimglib4.winx64.dll and b/build_mingw64/libamscimglib4.winx64.dll differ diff --git a/build_mingw64/libamscppimglib4.mingw64.a b/build_mingw64/libamscppimglib4.mingw64.a index 2933908..4c3e616 100644 Binary files a/build_mingw64/libamscppimglib4.mingw64.a and b/build_mingw64/libamscppimglib4.mingw64.a differ diff --git a/build_mingw64/objstore/amscppimglib4_intlutil.o b/build_mingw64/objstore/amscppimglib4_intlutil.o index 63f49bb..5945a34 100644 Binary files a/build_mingw64/objstore/amscppimglib4_intlutil.o and b/build_mingw64/objstore/amscppimglib4_intlutil.o differ diff --git a/build_mingw64/objstore/amscppimglib4_pngbytes.o b/build_mingw64/objstore/amscppimglib4_pngbytes.o new file mode 100644 index 0000000..a169fc3 Binary files /dev/null and b/build_mingw64/objstore/amscppimglib4_pngbytes.o differ diff --git a/build_mingw64/tests.exe b/build_mingw64/tests.exe index bae19bf..297d207 100644 Binary files a/build_mingw64/tests.exe and b/build_mingw64/tests.exe differ diff --git a/include/amscppimglib4/amscppimglib4.hpp b/include/amscppimglib4/amscppimglib4.hpp index 9cffe0e..aad93d0 100644 --- a/include/amscppimglib4/amscppimglib4.hpp +++ b/include/amscppimglib4/amscppimglib4.hpp @@ -115,6 +115,12 @@ namespace ams int read_image(const char *fname, amsimage* image); int write_image(const char *fname, amsimage* image); + //functions to manipulate png compressed images in memory + int image_to_pngbytes(amsimage *image, unsigned char *pngbytes, long bytes_available, long *bytes_written); + long image_to_pngbytes_bytesneeded(amsimage *image); + int pngbytes_to_image(unsigned char *pngbytes, long bufferlength, amsimage *image); + + class amsbitplane { public: @@ -216,8 +222,6 @@ namespace ams }; - - }; //end namespace ams #include diff --git a/src/amscppimglib4/amscppimglib4_intlutil.cpp b/src/amscppimglib4/amscppimglib4_intlutil.cpp index 4d1e4f3..11b3a2e 100644 --- a/src/amscppimglib4/amscppimglib4_intlutil.cpp +++ b/src/amscppimglib4/amscppimglib4_intlutil.cpp @@ -22,12 +22,12 @@ namespace imglib4 int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib; int dx,dy; - dx = Nxfrom; - dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx; + dx = Nxto; + dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx; dx = (dx<0) ? 0 : dx; - dy = Nyfrom; - dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy; + dy = Nyto; + dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy; dy = (dy<0) ? 0 : dy; N = dx*dy; @@ -41,8 +41,8 @@ namespace imglib4 Ix = I%dx; Iy = I/dx; - Ia = (Ix+offsetx) + Nxto*(Iy+offsety); - Ib = Ix + Nxfrom*Iy; + Ia = (Ix) + Nxto*(Iy); + Ib = (Ix+offsetx) + Nxfrom*(Iy+offsety); datato[0 + 4*Ia] = datafrom[0 + 4*Ib]; datato[1 + 4*Ia] = datafrom[1 + 4*Ib]; @@ -70,12 +70,12 @@ namespace imglib4 if(datato==NULL) return; if(datafrom==NULL) return; - dx = Nxfrom; - dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx; + dx = Nxto; + dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx; dx = (dx<0) ? 0 : dx; - dy = Nyfrom; - dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy; + dy = Nyto; + dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy; dy = (dy<0) ? 0 : dy; N = dx*dy; @@ -179,12 +179,12 @@ namespace imglib4 int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib; int dx,dy; - dx = Nxfrom; - dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx; + dx = Nxto; + dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx; dx = (dx<0) ? 0 : dx; - dy = Nyfrom; - dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy; + dy = Nyto; + dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy; dy = (dy<0) ? 0 : dy; N = dx*dy; @@ -198,8 +198,11 @@ namespace imglib4 Ix = I%dx; Iy = I/dx; - Ia = Ipto + Npto*((Ix+offsetx) + Nxto*(Iy+offsety)); - Ib = Ipfrom + Npfrom*(Ix + Nxfrom*Iy); + // Ia = Ipto + Npto*((Ix+offsetx) + Nxto*(Iy+offsety)); + // Ib = Ipfrom + Npfrom*(Ix + Nxfrom*Iy); + + Ia = Ipto + Npto*((Ix) + Nxto*(Iy)); + Ib = Ipfrom + Npfrom*((Ix+offsetx) + Nxfrom*(Iy+offsety)); datato[Ia] = datafrom[Ib]; } @@ -228,12 +231,12 @@ namespace imglib4 if(datato==NULL) return; if(datafrom==NULL) return; - dx = Nxfrom; - dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx; + dx = Nxto; + dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx; dx = (dx<0) ? 0 : dx; - dy = Nyfrom; - dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy; + dy = Nyto; + dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy; dy = (dy<0) ? 0 : dy; N = dx*dy; diff --git a/src/amscppimglib4/amscppimglib4_pngbytes.cpp b/src/amscppimglib4/amscppimglib4_pngbytes.cpp new file mode 100644 index 0000000..7ce17ba --- /dev/null +++ b/src/amscppimglib4/amscppimglib4_pngbytes.cpp @@ -0,0 +1,86 @@ + +#include +#include +#include + +namespace ams +{ + + //functions to manipulate png compressed images in memory + + long image_to_pngbytes_bytesneeded(amsimage *image) + { + long ret = 0; + amscimglib4_image dummyimg; + + dummyimg.data = image->data; + dummyimg.sizex = image->Nx; + dummyimg.sizey = image->Ny; + + ret = amscimglib4_pngbytebufferlen(&dummyimg); + + + dummyimg.data = NULL; + dummyimg.sizex = 0; + dummyimg.sizey = 0; + + return ret; + } + + int image_to_pngbytes(amsimage *image, unsigned char *pngbytes, long bytes_available, long *bytes_written) + { + int ret = amsimage_success; + long lbytes_written; + amscimglib4_image dummyimg; + int res; + + dummyimg.data = image->data; + dummyimg.sizex = image->Nx; + dummyimg.sizey = image->Ny; + + res = amscimglib4_pngbytebuffer_from_img(&dummyimg,pngbytes,bytes_available, &lbytes_written); + if(bytes_written!=NULL) *bytes_written = lbytes_written; + if(res==amscimglib4_failure) + { + ret = amsimage_failure; + } + + dummyimg.data = NULL; + dummyimg.sizex = 0; + dummyimg.sizey = 0; + + + return ret; + } + + + + int pngbytes_to_image(unsigned char *pngbytes, long bufferlength, amsimage *image) + { + int ret = amsimage_success; + int res; + amscimglib4_image *dummyimg = NULL; + + amscimglib4_image_new(&dummyimg,1,1); + + res = amscimglib4_pngbytebuffer_to_img(dummyimg,pngbytes,bufferlength); + if(res == amscimglib4_failure) + { + ret = amsimage_failure; + return ret; + } + + image->resize(dummyimg->sizex,dummyimg->sizey); + imglib4::amsimage_region_copy( + image->data, + image->Nx,image->Ny, + dummyimg->data,dummyimg->sizex,dummyimg->sizey,0,0 + ); + + + amscimglib4_image_delete(&dummyimg); + + return ret; + } + +};