def editColors(img): edited = img.copy() # allow for color intensity options (r,g,b) = [np.array(chan,dtype=np.uint16) for chan in edited.split()] channels = { 'r': r, 'g': g, 'b': b } for chan in channels: channels[chan] = channels[chan] * colorChannels[chan].get()/100.0 channels[chan] = channels[chan].clip(0,255) edited = Image.merge("RGB",[Image.fromarray(channels[chan].astype(np.uint8)) for chan in ('r','g','b')]) saturator = ImageEnhance.Color(edited) edited = saturator.enhance(saturation.get()/100.0) lightnessor = ImageEnhance.Brightness(edited) edited = lightnessor.enhance(lightness.get()/100.0) contrastor = ImageEnhance.ContrastEink(edited) edited = contrastor.enhance(contrast.get()/100.0) return edited
channels[chan] = channels[chan].clip(0, 255) im = Image.merge("RGB", [ Image.fromarray(channels[chan].astype(np.uint8)) for chan in ('r', 'g', 'b') ]) if args['saturation'] != None: saturator = ImageEnhance.Color(im) im = saturator.enhance(args['saturation']) if args['lightness']: lightnessor = ImageEnhance.Brightness(im) im = lightnessor.enhance(args['lightness']) if args['contrast']: contrastor = ImageEnhance.ContrastEink(im) im = contrastor.enhance(args['contrast']) # convert input image to real color dithered if not args["keepPalette"]: im.load() paletteImage.load() newim = im.im.convert("P", True, paletteImage.im) im = im._new(newim) if not args["o"] and not args["p"] and not args["showEinkPalette"]: im.show() # get the dithered images bytes and hot swap out the real color # palette for the eink color palette ba = BytesIO()