fixed subimage logic
This commit is contained in:
		@ -3,9 +3,6 @@
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			"path": "."
 | 
								"path": "."
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"path": "../../sourceprojs23/amsimglib3"
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			"path": "../amscimglib4"
 | 
								"path": "../amscimglib4"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								build/__pycache__/amsbuildlib4.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build/__pycache__/amsbuildlib4.cpython-311.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_linux64/objstore/amscppimglib4_pngbytes.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_linux64/objstore/amscppimglib4_pngbytes.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build_mingw64/objstore/amscppimglib4_pngbytes.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build_mingw64/objstore/amscppimglib4_pngbytes.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@ -115,6 +115,12 @@ namespace ams
 | 
				
			|||||||
    int read_image(const char *fname, amsimage* image);
 | 
					    int read_image(const char *fname, amsimage* image);
 | 
				
			||||||
    int write_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
 | 
					    class amsbitplane
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public:
 | 
					        public:
 | 
				
			||||||
@ -216,8 +222,6 @@ namespace ams
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}; //end namespace ams
 | 
					}; //end namespace ams
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <amscppimglib4/amscppimglib4_tests.hpp>
 | 
					#include <amscppimglib4/amscppimglib4_tests.hpp>
 | 
				
			||||||
 | 
				
			|||||||
@ -22,12 +22,12 @@ namespace imglib4
 | 
				
			|||||||
        int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib;
 | 
					        int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib;
 | 
				
			||||||
        int dx,dy;
 | 
					        int dx,dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dx = Nxfrom;
 | 
					        dx = Nxto;
 | 
				
			||||||
        dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx;
 | 
					        dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx;
 | 
				
			||||||
        dx = (dx<0) ? 0 : dx;
 | 
					        dx = (dx<0) ? 0 : dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dy = Nyfrom;
 | 
					        dy = Nyto;
 | 
				
			||||||
        dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy;
 | 
					        dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy;
 | 
				
			||||||
        dy = (dy<0) ? 0 : dy;
 | 
					        dy = (dy<0) ? 0 : dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        N = dx*dy;
 | 
					        N = dx*dy;
 | 
				
			||||||
@ -41,8 +41,8 @@ namespace imglib4
 | 
				
			|||||||
            Ix = I%dx;
 | 
					            Ix = I%dx;
 | 
				
			||||||
            Iy = I/dx;
 | 
					            Iy = I/dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Ia = (Ix+offsetx) + Nxto*(Iy+offsety);
 | 
					            Ia = (Ix) + Nxto*(Iy);
 | 
				
			||||||
            Ib = Ix + Nxfrom*Iy;
 | 
					            Ib = (Ix+offsetx) + Nxfrom*(Iy+offsety);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            datato[0 + 4*Ia] = datafrom[0 + 4*Ib];
 | 
					            datato[0 + 4*Ia] = datafrom[0 + 4*Ib];
 | 
				
			||||||
            datato[1 + 4*Ia] = datafrom[1 + 4*Ib];
 | 
					            datato[1 + 4*Ia] = datafrom[1 + 4*Ib];
 | 
				
			||||||
@ -70,12 +70,12 @@ namespace imglib4
 | 
				
			|||||||
        if(datato==NULL) return;
 | 
					        if(datato==NULL) return;
 | 
				
			||||||
        if(datafrom==NULL) return;
 | 
					        if(datafrom==NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dx = Nxfrom;
 | 
					        dx = Nxto;
 | 
				
			||||||
        dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx;
 | 
					        dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx;
 | 
				
			||||||
        dx = (dx<0) ? 0 : dx;
 | 
					        dx = (dx<0) ? 0 : dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dy = Nyfrom;
 | 
					        dy = Nyto;
 | 
				
			||||||
        dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy;
 | 
					        dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy;
 | 
				
			||||||
        dy = (dy<0) ? 0 : dy;
 | 
					        dy = (dy<0) ? 0 : dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        N = dx*dy;
 | 
					        N = dx*dy;
 | 
				
			||||||
@ -179,12 +179,12 @@ namespace imglib4
 | 
				
			|||||||
        int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib;
 | 
					        int64_t I,I0,I1,Is,N,Ix,Iy,Ia,Ib;
 | 
				
			||||||
        int dx,dy;
 | 
					        int dx,dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dx = Nxfrom;
 | 
					        dx = Nxto;
 | 
				
			||||||
        dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx;
 | 
					        dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx;
 | 
				
			||||||
        dx = (dx<0) ? 0 : dx;
 | 
					        dx = (dx<0) ? 0 : dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dy = Nyfrom;
 | 
					        dy = Nyto;
 | 
				
			||||||
        dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy;
 | 
					        dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy;
 | 
				
			||||||
        dy = (dy<0) ? 0 : dy;
 | 
					        dy = (dy<0) ? 0 : dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        N = dx*dy;
 | 
					        N = dx*dy;
 | 
				
			||||||
@ -198,8 +198,11 @@ namespace imglib4
 | 
				
			|||||||
            Ix = I%dx;
 | 
					            Ix = I%dx;
 | 
				
			||||||
            Iy = I/dx;
 | 
					            Iy = I/dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Ia = Ipto + Npto*((Ix+offsetx) + Nxto*(Iy+offsety));
 | 
					            // Ia = Ipto + Npto*((Ix+offsetx) + Nxto*(Iy+offsety));
 | 
				
			||||||
            Ib = Ipfrom + Npfrom*(Ix + Nxfrom*Iy);
 | 
					            // Ib = Ipfrom + Npfrom*(Ix + Nxfrom*Iy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Ia = Ipto + Npto*((Ix) + Nxto*(Iy));
 | 
				
			||||||
 | 
					            Ib = Ipfrom + Npfrom*((Ix+offsetx) + Nxfrom*(Iy+offsety));
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            datato[Ia] = datafrom[Ib];
 | 
					            datato[Ia] = datafrom[Ib];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -228,12 +231,12 @@ namespace imglib4
 | 
				
			|||||||
        if(datato==NULL) return;
 | 
					        if(datato==NULL) return;
 | 
				
			||||||
        if(datafrom==NULL) return;
 | 
					        if(datafrom==NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dx = Nxfrom;
 | 
					        dx = Nxto;
 | 
				
			||||||
        dx = (dx>(Nxto-offsetx)) ? (Nxto-offsetx) : dx;
 | 
					        dx = (dx>(Nxfrom-offsetx)) ? (Nxfrom-offsetx) : dx;
 | 
				
			||||||
        dx = (dx<0) ? 0 : dx;
 | 
					        dx = (dx<0) ? 0 : dx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dy = Nyfrom;
 | 
					        dy = Nyto;
 | 
				
			||||||
        dy = (dy>(Nyto-offsety)) ? (Nyto-offsety) : dy;
 | 
					        dy = (dy>(Nyfrom-offsety)) ? (Nyfrom-offsety) : dy;
 | 
				
			||||||
        dy = (dy<0) ? 0 : dy;
 | 
					        dy = (dy<0) ? 0 : dy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        N = dx*dy;
 | 
					        N = dx*dy;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										86
									
								
								src/amscppimglib4/amscppimglib4_pngbytes.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/amscppimglib4/amscppimglib4_pngbytes.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					#include <amscppimglib4/amscppimglib4.hpp>
 | 
				
			||||||
 | 
					#include <amscppimglib4/amscppimglib4_intlutil.hpp>
 | 
				
			||||||
 | 
					#include <amscimglib4/amscimglib4.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Reference in New Issue
	
	Block a user