def compare(self, blob): greetings_query = Greeting.all().order('-date') greetings = greetings_query.fetch(10) i = 0 ds = {} for greeting in greetings: #w, h, pixels, metadata = reader.read() temp = greeting.pic reader1 = png.Reader(bytes=temp) #w, h, pixels, metadata = reader.read() png_w1, png_h1, pixels1, info1 = reader1.asDirect() pixelcount = red = blue = green = 0 #pixelcount = png_w * png_h i = 0 #print i #print type(pixels) reader = png.Reader(bytes=blob) png_w, png_h, pixels, info = reader.asDirect() #print pixels for row in pixels: j = 0 #print i row1 = pixels1.next() for pixel in png.group(row, info['planes']): pixel1 = png.group(row1, info['planes'])[j] red = red + abs(pixel[0] - pixel1[0]) green = green + abs(pixel[1] - pixel1[1]) blue = blue + abs(pixel[2] - pixel1[2]) j = j + 1 i = i + 1 ds[red + green + blue] = greeting #print "difference",pixelcount,red,green,blue return ds
def compare(self,blob): greetings_query = Greeting.all().order('-date') greetings = greetings_query.fetch(10) i=0 ds={} for greeting in greetings: #w, h, pixels, metadata = reader.read() temp=greeting.pic reader1 = png.Reader(bytes=temp) #w, h, pixels, metadata = reader.read() png_w1,png_h1,pixels1,info1 = reader1.asDirect() pixelcount = red = blue = green = 0 #pixelcount = png_w * png_h i=0 #print i #print type(pixels) reader = png.Reader(bytes=blob) png_w,png_h,pixels,info = reader.asDirect() #print pixels for row in pixels: j=0 #print i row1=pixels1.next() for pixel in png.group(row,info['planes']): pixel1= png.group(row1,info['planes'])[j] red = red + abs(pixel[0]-pixel1[0]) green = green + abs(pixel[1]-pixel1[1]) blue = blue + abs(pixel[2]-pixel1[2]) j=j+1 i=i+1 ds[red+green+blue]=greeting #print "difference",pixelcount,red,green,blue return ds
def get(self): url = self.request.get('url') # go grab the image result = urllib2.urlopen(url) # resize to a 20px thumbnail img = images.Image(result.read()) img.resize(width=20, height=20) thumbnail = img.execute_transforms(output_encoding=images.PNG) # read the thumbnail r = png.Reader(bytes=thumbnail) png_w, png_h, pixels, info = r.asDirect() # analyze the pixel data pixelcount = red = blue = green = 0 pixelcount = png_w * png_h for row in pixels: for pixel in png.group(row, info['planes']): red = red + pixel[0] green = green + pixel[1] blue = blue + pixel[2] data = { 'url': url, 'mean': { 'r': red / pixelcount, 'g': green / pixelcount, 'b': blue / pixelcount, 'hex': "#%02X%02X%02X" % (red / pixelcount, green / pixelcount, blue / pixelcount) } } if self.request.path == '/html': data['debug'] = { 'w': png_w * 20, 'h': png_h * 20, } path = os.path.join(os.path.dirname(__file__), 'templates/image.html') self.response.out.write(template.render(path, data)) elif self.request.path == '/json': simplejson.dump(data, self.response.out)
def get(self): url = self.request.get('url') # go grab the image result = urllib2.urlopen(url) # resize to a 20px thumbnail img = images.Image(result.read()) img.resize(width=20, height=20) thumbnail = img.execute_transforms(output_encoding=images.PNG) # read the thumbnail r = png.Reader(bytes = thumbnail) png_w,png_h,pixels,info = r.asDirect() # analyze the pixel data pixelcount = red = blue = green = 0 pixelcount = png_w * png_h for row in pixels: for pixel in png.group(row,info['planes']): red = red + pixel[0] green = green + pixel[1] blue = blue + pixel[2] data = { 'url' : url, 'mean': { 'r':red/pixelcount, 'g':green/pixelcount, 'b':blue/pixelcount, 'hex':"#%02X%02X%02X" %(red/pixelcount,green/pixelcount,blue/pixelcount) } } if self.request.path == '/html': data['debug'] = { 'w': png_w * 20, 'h': png_h * 20, } path = os.path.join(os.path.dirname(__file__), 'templates/image.html') self.response.out.write(template.render(path, data)) elif self.request.path == '/json': simplejson.dump(data,self.response.out)