def run(self, ips, imgs, para = None): old = ips.size shp = (para['w'], para['h']) chns = ips.get_nchannels() if chns>1:shp = (shp[1], shp[0], chns) if para['hor'] == 'left':c=0 if para['ver'] == 'top':r=0 if para['hor'] == 'center':c=(shp[1]-old[1])/2 if para['ver'] == 'center':r=(shp[0]-old[0])/2 if para['hor'] == 'right':c=shp[1]-old[1] if para['ver'] == 'bottom':r=shp[0]-old[0] if ips.is3d: s = list(imgs.shape) s[1], s[2] = shp[0], shp[1] rst = np.zeros(s, dtype=ips.dtype) for i in range(len(imgs)): IPy.curapp.set_progress(round(i*100.0/len(imgs))) bliter.blit(rst[i], imgs[i], c, r) else: rst = [] for i in range(len(imgs)): IPy.curapp.set_progress(round(i*100.0/len(imgs))) rst.append(np.zeros(shp, ips.dtype)) bliter.blit(rst[-1], imgs[i], c, r) IPy.curapp.set_progress(0) ips.roi = None ips.set_imgs(rst)
def mouse_up(self, ips, x, y, btn, **key): if self.moving == True: self.moving = False ci = ClipBoardManager.img img = ips.img #ips.roi.draged(ci.shape[1]/2,ci.shape[0]/2, ips.size[1]/2, ips.size[0]/2, True) #ips.roi = IPy.clipboard[1].affine(np.eye(2), ((np.array(ips.size)-ci.shape[:2])[::-1]/2)) x,y = (np.array(ips.size)-ci.shape[:2])/2+(self.cy,self.cx) bliter.blit(img, ci, y, x) ips.reset(True) ips.update()
def run(self, ips, imgs, para = None): if ClipBoardManager.img == None:return ips.snapshot() ips.roi = ClipBoardManager.roi ci = ClipBoardManager.img img = ips.img #ips.roi.draged(ci.shape[1]/2,ci.shape[0]/2, ips.size[1]/2, ips.size[0]/2, True) ips.roi = ClipBoardManager.roi.affine(np.eye(2), ((np.array(ips.size)-ci.shape[:2])[::-1]/2)) x,y = (np.array(ips.size)-ci.shape[:2])/2 bliter.blit(img, ci, y, x) ips.reset(True) ips.tool = PasteMove()
def run(self, ips, imgs, para = None): ips1 = WindowsManager.get(para['img1']).ips ips2 = WindowsManager.get(para['img2']).ips ips1.snapshot() sl1, sl2 = ips1.get_nslices(), ips2.get_nslices() cn1, cn2 = ips1.get_nchannels(), ips2.get_nchannels() if ips1.dtype != ips2.dtype: IPy.alert('Two stack must be equal dtype!') return elif sl1>1 and sl2>1 and sl1!=sl2: IPy.alert('Two stack must have equal slices!') return elif cn1>1 and cn2>1 and cn1!=cn2: IPy.alert('Two stack must have equal channels!') return w, h = ips1.size, ips2.size w, h = min(w[0], h[0]), min(w[1], h[1]) if sl1 == 1: bliter.blit(ips1.img, ips2.img, mode=para['op']) elif sl1>1 and sl2==1: for i in range(sl1): self.progress(i, sl1) bliter.blit(ips1.imgs[i], ips2.img, mode=para['op']) elif sl1>1 and sl2>1: for i in range(sl1): self.progress(i, sl1) bliter.blit(ips1.imgs[i], ips2.imgs[i], mode=para['op']) ips1.update = 'pix'
def run(self, ips, imgs, para=None): old = ips.size shp = (para['w'], para['h']) chns = ips.get_nchannels() if chns > 1: shp = (shp[1], shp[0], chns) if para['hor'] == 'left': c = 0 if para['ver'] == 'top': r = 0 if para['hor'] == 'center': c = (shp[1] - old[1]) // 2 if para['ver'] == 'center': r = (shp[0] - old[0]) // 2 if para['hor'] == 'right': c = shp[1] - old[1] if para['ver'] == 'bottom': r = shp[0] - old[0] if ips.is3d: s = list(imgs.shape) s[1], s[2] = shp[0], shp[1] rst = np.zeros(s, dtype=ips.dtype) for i in range(len(imgs)): self.progress(i, len(imgs)) bliter.blit(rst[i], imgs[i], c, r) else: rst = [] for i in range(len(imgs)): self.progress(i, len(imgs)) rst.append(np.zeros(shp, ips.dtype)) bliter.blit(rst[-1], imgs[i], c, r) ips.roi = None ips.set_imgs(rst) if ips.backimg is None: return nbc = np.zeros(shp, dtype=np.uint8) bliter.blit(nbc, ips.backimg, c, r) ips.backimg = nbc