def get(self): # img = PNGCanvas(256, 256) pix = [0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] pix = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] krast=5 starp=2 splot = 14 sauks = 14 splot = 9 sauks = 15 istr=int(math.sqrt((splot/2)*(splot/2)+(sauks/2)*(sauks/2))) splot2 = istr*2 sauks2 = istr*2 nn=10 plot=2*krast + nn*splot + (nn-1)*starp auks=2*krast + sauks; plot2=2*krast + nn*splot2 + (nn-1)*starp auks2=2*krast + sauks2; # img = PNGCanvas(plot, auks, [0, 0,0,0]) img = PNGCanvas(plot2, auks2, [0, 0,0,0]) # img = PNGCanvas(plot, auks, [0, 0,0,0]) ss=[0,2,4,6,8,1,3,5,7,9] ss=[0,1,2,3,4,5,6,7,8,9] for i in range(0, 10): sx = ss[i] # sx = random.randrange(0, 10) alfa=((random.randrange(0, 90 , 5)-45)*math.pi)/180 for y in range(1, sauks): # alfa=math.pi/2 # alfa=math.pi/4 alfa=0 for x in range(1, splot): nr = sx*(splot*sauks)+(y-1)*splot+x-1 xcor=x-splot/2 -1 ycor=y-sauks/2-1 istrs=math.sqrt(xcor*xcor+ycor*ycor) # if xcor==0: # if ycor < 0: # alfa1=-math.pi/2 # else: # alfa1=-math.pi/2 # else: alfa1=math.atan2(ycor,xcor) xcornew=istrs*math.cos(alfa1+alfa) ycornew=istrs*math.sin(alfa1+alfa) xx=int(krast+i*(starp+splot2)+splot2/2+1+xcornew) yy=int(krast+sauks2/2+1+ycornew) # xx=krast+i*(starp+splot2)+xcor+splot2/2 +1 # yy=krast+ycor+sauks2/2 +1 if pix[nr]==1: # img.point(xx, yy, [0xff, 0, 0, 0xff]) img.point(xx, yy, [0xff, 0xfa, 0xcd, 0xff]) self.response.headers['Content-Type'] = "image/png" self.response.out.write(img.dump())
def grabImage(): windows = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID) for window in windows: #print(window) try: if window['kCGWindowName'] == 'Krunker': print('Krunker window found!') print(window) # get window dimensions x = int(window['kCGWindowBounds']['X']) y = int(window['kCGWindowBounds']['Y']) width = int(window['kCGWindowBounds']['Width']) height = int(window['kCGWindowBounds']['Height']) print('Dimensions: {}'.format((x, y, width, height))) center = (width // 2, height // 2) print('Center: {}'.format(center)) window_id = int(window['kCGWindowNumber']) print('Window ID: {}'.format(window_id)) #region = CGRectMake(x, y, width, height) #region = CGRectInfinite # get img data img = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionAll, window_id, kCGWindowImageDefault) prov = CGImageGetDataProvider(img) img_data = CGDataProviderCopyData(prov) img_width, img_height = CGImageGetWidth(img), CGImageGetHeight( img) # create canvas based on image data pixels canvas = PNGCanvas(img_width, img_height) for x in range(img_width): for y in range(img_height): offset = 4 * ( (img_width * int(round(y))) + int(round(x))) b, g, r, a = struct.unpack_from('BBBB', img_data, offset=offset) canvas.point(x, y, color=(r, g, b, a)) # dump canvas to png with open('test.png', 'wb') as f: f.write(canvas.dump()) except: # handle exception pass
def gdfontstring(self,pic,str,x,y,color): str="%s" % str x=int(x) y=int(y) data=self.__font_data count=self.__font_count start=self.__font_start width=self.__font_width height=self.__font_height z=0 for c in str: codesim=ord(c) for i2 in range(0, height): for i3 in range(0, width): z0=(codesim*width*height+i2*width+i3)*2+32; code=data[z0:(z0+2)] if len(code) == 0: code="0" x0= int(code, 16) if x0>0: PNGCanvas.point(pic,(x+z*width+i3),(y+i2),color) z+=1 return pic
def draw(): from pngcanvas import PNGCanvas import random canvas = PNGCanvas(1000, 1000, bgcolor=(255, 255, 255, 255), color=(0, 0, 0, 255)) circles = [] for _ in range(15): circles.append(Circle(Point(random.randint(0, 1000), random.randint(0, 1000)), random.randint(0, 500))) for circle in circles: for point in circle.get_points(): canvas.point(point.x, point.y, (0x0, 0x0, 0x0, 0xFF)) for left, right in itertools.combinations(circles, 2): for interseption_point in left.intercect_circle_points(right): for p in interseption_point.as_circle(4).get_points(): if p is False or type(p.x) is complex: continue canvas.point(p.x, p.y, (0xff, 0x0, 0x0, 0xff)) with open('circles.png', 'wb') as png: png.write(canvas.dump())
""" from pngcanvas import PNGCanvas import math HEIGHT = 500 WIDTH = int(HEIGHT * (16 / 9)) canvas = PNGCanvas(WIDTH, HEIGHT, bgcolor=(255, 255, 255, 255), color=(0, 0, 0, 255)) def get_point(x, y): """ Return (Red, Green, Blue, Alpha) for the given (x, y) point. """ R = (math.sin(x / 50)**2) * 0xFF G = (math.cos(y / 50)**2) * 0xFF B = (math.sin((x - y) / 50)**2) * 0xFF A = 0xFF return (int(R), int(G), int(B), int(A)) for x in range(WIDTH): for y in range(HEIGHT): canvas.point(x, y, get_point(x, y)) with open('solution.png', 'wb') as solution: solution.write(canvas.dump())
# Unpack data from string into Python'y integers b, g, r, a = struct.unpack_from(data_format, self._data, offset=offset) # Return BGRA as RGBA return (r, g, b, a) def get_screenshot(): sp = ScreenPixel() sp.capture() print(sp.width, sp.height) print(sp.pixel(0, 0)) # 这里是解析像素点色彩 im = Image.frombytes("RGBA", (sp.width, sp.height), sp._data) b, g, r, a = im.split() im = Image.merge("RGBA", (r, g, b, a)) return im if __name__ == "__main__": sp = ScreenPixel() # 设置区域截图(截图区域必须符合1024的规则,不然图像会异常) region = CG.CGRectMake(64, 64, 128, 128) sp.capture(region=region) c = PNGCanvas(sp.width, sp.height) for x in range(sp.width): for y in range(sp.height): c.point(x, y, color = sp.pixel(x, y)) # 这里是保存,如果不需要就可以不用保存,区域越大,保存时间越长 with open("test.png", "wb") as f: f.write(c.dump())
""" #!/usr/bin/env python3 from pngcanvas import PNGCanvas import math HEIGHT = 500 WIDTH = int(HEIGHT * (16 / 9)) canvas = PNGCanvas(WIDTH, HEIGHT, bgcolor=(255, 255, 255, 255), color=(0, 0, 0, 255)) def get_point(x, y): """ Return (Red, Green, Blue, Alpha) for the given (x, y) point. """ R = (math.sin(x / 50) ** 2) * 0xFF G = (math.cos(y / 50) ** 2) * 0xFF B = (math.sin((x - y) / 50) ** 2) * 0xFF A = 0xFF return (int(R), int(G), int(B), int(A)) for x in range(WIDTH): for y in range(HEIGHT): canvas.point(x, y, get_point(x, y)) with open('solution.png', 'wb') as solution: solution.write(canvas.dump())
def get(self): # f = open("ttt.zip", "rb") bio1_b64 = \ """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 AAAASUVORK5CYII= """ png1_b64 = \ """iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAABnRSTlP///////+evUsyAAADtElE QVR42u3YgY0DQQzDQPdftLFdGAtwiCsglqhP7mcHaGMDqJtvA6j/3bcB1H/12ADqv/ltAPU3XhtA 134bQN1+G0DdfhtA3X4bQN1+G0DdfhtA3X4bQN1+G0DdfhtA3X4bQN1+G0DdfhtA3X4bQN1+G0Dd fhtA3X4bAPdsAKyzAfDNBlA3zQZQd8wGULfLBlD3ygZQN8oGUHfJBlC3yAZQ98cGUDfHBlB3xgZQ t8UGUPfEBlA3xAZQd8MGULfCBlD3wQZQN8EGsO6H9qUAvcsCGpcIdC0XaFk60K+MoFlJQafygjal Bj3KDhqUIHQnR2hNmtCXTKEpyUJH8oV2pAy9yBoakTh0IXdoQfqQvw4geU1A5vqAtLUCOesGEtYQ ZKsnSFVbkKfOIEnNQYb6kx60KDfoUmLQqKygVylBu/KBjiUDTcsE+pYGtC4H6F4CYIDbwQNXgw3u BSdcCma4EfxwHVjiLnDFRWCMW8AbV4A9Pj845JODSewHn9gPVrEf3GI/GMZ+8Iz9YBv7wTn2g3ns R9o/9qO7AfajuwH2o7sB9qO7AfajuwH2o7sB9qO7AfajuwH2o7sB9qO7AfajuwH2o7sB9qO7Afaj uwH2n7bi8WQf/PU9oBJ0N8B+dDfAfu8AHo93gN73gBrgtxDgGwDeATwe7wD+CwT0fvfbAOpvvTbg HcDj8Q7Q/o+nYtC13wZQt98GULffBlC33wZQt98GULffBlC33wZQt98GULffBlC33wZQt98GULff BlC33wZQt98GULffBsA8GwDnbABsswHUPbMB1A2zAdTdsgHUrbIB1H2yAdRNsgHUHbIB1O2xAdS9 sQHUjbEB1F2xAdQtsQHU/bAB1M2wAdSdsAHUbbAB1D2wAfZLALqXA7QuDehbJtC0ZKBj+UC7UoJe ZQWNSgy6lBu0KD3oT4bQnCShM3lCW1KFnmQLDUkYupEztCJt6EPm0ITkoQP5Q/pagNx1AYlrBLLW C6SsHchXR5CspiBTfUGaWoMcdQcJalB20KPUoE15QaeSgmZlBP1KB1qWC3QtEWhcFtC7FKB994MD LgcT3Aw+uBascCe44UIwxG3giavAFveAMy4Bc9wA/vj0YJHPDS6xH4xiP3jFfrCL/eAY+8E09oNv 7Afr2A/usR9lA9mP7gbYj+4G2I/uBtiP7gbYj+4G2I/uBtiP7gbYj+4G2I/uBtiP7gbYj+4G2I/u BtiP7gbYj+4G2I/uBtiP7gbYj+4G2I/uBtiP7gbYj+wGHstS6mBKh9nJAAAAAElFTkSuQmCC """ imghex=base64.decodestring(bio1_b64) f = cStringIO.StringIO(imghex) # f=cStringIO.StringIO() # f.write(img) # img = PNGCanvas(256, 256) img = PNGCanvas(256, 256, [0, 0,0,0]) img.load(f) f.close() font=GDFont() font.load( 'giant_w57.gd','gdfonts') img=GDFont.gdfontstring(font,img,"Bioritmai",5,5,[0xff, 0xff, 0, 0xff]) font2=GDFont() font2.load( 'medium_w57.gd','gdfonts') img=GDFont.gdfontstring(font2,img,"ABCabc",5,25,[0xff, 0xff, 0, 0xff]) for i in range(0, 256): img.point(i, i, [0xff, 0, 0, 0xff]) ii = 256 - i img.point(ii, i, [0xff, 0, 0, 0xff]) img.point(122, i, [0xff, 0, 0, 0xff]) img.point(126, i, [0xff, 0, 0, 0xff]) img.point(130, i, [0xff, 0, 0, 0xff]) img.point(134, i, [0xff, 0, 0, 0xff]) img.point(i, 122, [0xff, 0, 0, 0xff]) img.point(i, 126, [0xff, 0, 0, 0xff]) img.point(i, 130, [0xff, 0, 0, 0xff]) img.point(i, 134, [0xff, 0, 0, 0xff]) self.response.headers['Content-Type'] = "image/png" self.response.out.write(img.dump())
#!/usr/bin/python # Gets partial screenshot and saves it into PNG file. import Quartz.CoreGraphics as cg region = cg.CGRectMake( 0, 0, 400, 400) # You can also use cg.CGRectInfinite for the full screen. image = cg.CGWindowListCreateImage(region, cg.kCGWindowListOptionOnScreenOnly, cg.kCGNullWindowID, cg.kCGWindowImageDefault) prov = cg.CGImageGetDataProvider(image) img_data = cg.CGDataProviderCopyData(prov) img_width, img_height = cg.CGImageGetWidth(image), cg.CGImageGetHeight(image) from pngcanvas import PNGCanvas import struct canvas = PNGCanvas(img_width, img_height) for x in range(img_width): for y in range(img_height): # Calculate offset, based on http://www.markj.net/iphone-uiimage-pixel-color/ offset = 4 * ((img_width * int(round(y))) + int(round(x))) # Pixel data is unsigned char (8bit unsigned integer), and there are for (blue,green,red,alpha). # Unpack data from string into Python'y integers. b, g, r, a = struct.unpack_from("BBBB", img_data, offset=offset) # Assign BGRA color as RGBA. canvas.point(x, y, color=(r, g, b, a)) with open("test.png", "wb") as f: f.write(canvas.dump())
self.width = CG.CGImageGetWidth(image) self.height = CG.CGImageGetHeight(image) def pixel(self, x, y): data_format = "BBBB" offset = 4 * ((self.width*int(round(y))) + int(round(x))) b, g, r, a = struct.unpack_from(data_format, self._data, offset=offset) return (r, g, b, a) if __name__ == '__main__': sp = ScreenPixel() region = CG.CGRectMake(242, 440, 400, 400) sp.capture(region=region) print sp.width, sp.height print sp.pixel(0, 0) from pngcanvas import PNGCanvas c = PNGCanvas(sp.width, sp.height) for x in range(sp.width): for y in range(sp.height): c.point(x, y, color = sp.pixel(x, y)) with open("test.png", "wb") as f: f.write(c.dump())