def photoRss(self, ctx): request = inevow.IRequest(ctx) # this should be making atom! # it needs to return the most recent pics, with a link to the next set! # copied from what flickr emits request.setHeader("Content-Type", "text/xml; charset=utf-8") items = [ T.Tag('title')["bigasterisk %s photos" % self.desc.determineLabel( self.desc.graph, self.desc.topicDict)] ] for pic in self.desc.photos( )[-50:]: # no plan yet for the range. use paging i guess items.append( T.Tag('item')[ T.Tag('title')[self.graph. label(pic, default=pic.split('/')[-1])], T.Tag('link')[absoluteSite(pic) + '?size=screen'], T.Tag('description')['<a href="%s"><img src="%s" /></a>' % (absoluteSite(pic) + '?size=large', absoluteSite(pic) + '?size=thumb')], T.Tag('media:thumbnail')(url=absoluteSite(pic) + '?size=small'), T.Tag('media:content')(url=absoluteSite(pic) + '?size=screen'), ]) return """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> """ + flat.flatten(items) + """
def photoRss(self, ctx): request = inevow.IRequest(ctx) # this should be making atom! # it needs to return the most recent pics, with a link to the next set! # copied from what flickr emits request.setHeader("Content-Type", "text/xml; charset=utf-8") items = [T.Tag('title')["bigasterisk %s photos" % self.desc.determineLabel(self.desc.graph, self.desc.topicDict)]] for pic in self.desc.photos()[-50:]: # no plan yet for the range. use paging i guess items.append(T.Tag('item')[ T.Tag('title')[self.graph.label(pic, default=pic.split('/')[-1])], T.Tag('link')[absoluteSite(pic) + '?size=screen'], T.Tag('description')[ '<a href="%s"><img src="%s" /></a>' % (absoluteSite(pic) + '?size=large', absoluteSite(pic) + '?size=thumb')], T.Tag('media:thumbnail')(url=absoluteSite(pic) + '?size=small'), T.Tag('media:content')(url=absoluteSite(pic) + '?size=screen'), ]) return """<?xml version="1.0" encoding="utf-8" standalone="yes"?> <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> """ + flat.flatten(items) + """
def compare(uri1, uri2, img1, img2, processImgs1, processImgs2, includeFft): abs1 = absoluteSite(uri1) abs2 = absoluteSite(uri2) m = numpy.minimum(img1.shape, img2.shape) crop1 = img1[:m[0], :m[1], :] crop2 = img2[:m[0], :m[1], :] ffts = [] if includeFft: for uri in [uri1, uri2]: freqs = range(5) #getFreqs(hiresArray(uri)) ffts.append( inlineImage( sparkline_discrete(freqs[:int(len(freqs) * .9):2], dmin=0, width=1, height=70, longlines=True), 'freqs')) else: ffts = ['', ''] row = """ <div> <div>{uri1} - {uri2}</div> <img src="{abs1}?size=thumb"><span>uri1</span> <img src="{abs2}?size=thumb"><span>uri2</span> / {processImgs1} {processImgs2} / {ffts[0]} {ffts[1]} """.format(**vars()) outVal = None for alg, scl, out in [ #('norm', 800/.42, numpy.linalg.norm(crop1 - crop2) / m.sum()), ('sum', 800 / .38, numpy.abs(crop1 - crop2).reshape( (-1, )).sum(axis=0) / m.prod()) ]: outVal = out row += '<pre>{alg:<8}: <span class="bar" style="width: {w}px">{out}</span></pre>'.format( alg=alg, out=out, w=out * scl) row += "</div>" return outVal, row
def compare(uri1, uri2, img1, img2, processImgs1, processImgs2, includeFft): abs1 = absoluteSite(uri1) abs2 = absoluteSite(uri2) m = numpy.minimum(img1.shape, img2.shape) crop1 = img1[:m[0],:m[1],:] crop2 = img2[:m[0],:m[1],:] ffts = [] if includeFft: for uri in [uri1, uri2]: freqs = range(5)#getFreqs(hiresArray(uri)) ffts.append(inlineImage( sparkline_discrete(freqs[:int(len(freqs)*.9):2], dmin=0, width=1, height=70, longlines=True), 'freqs')) else: ffts = ['', ''] row = """ <div> <div>{uri1} - {uri2}</div> <img src="{abs1}?size=thumb"><span>uri1</span> <img src="{abs2}?size=thumb"><span>uri2</span> / {processImgs1} {processImgs2} / {ffts[0]} {ffts[1]} """.format(**vars()) outVal = None for alg, scl, out in [ #('norm', 800/.42, numpy.linalg.norm(crop1 - crop2) / m.sum()), ('sum', 800/.38, numpy.abs(crop1-crop2).reshape((-1,)).sum(axis=0) / m.prod())]: outVal = out row += '<pre>{alg:<8}: <span class="bar" style="width: {w}px">{out}</span></pre>'.format(alg=alg, out=out, w=out*scl) row += "</div>" return outVal, row
def arrayForImage(uri): res = 15 hueStrength = 1.0 satStrength = .5 valStrength = .4 au = absoluteSite(uri) jpg = restkit.Resource(au).get(size='thumb').body_string() i = Image.open(StringIO(jpg)) i = Image.blend(i, ImageOps.autocontrast(i, cutoff=5), .8) i = i.resize((res, int(res * 3 / 4)), Image.ANTIALIAS) ar = numpy.asarray(i, dtype='f') / 255 ar.shape = i.size[1], i.size[0], 3 ar = hsv_from_rgb(ar) * [hueStrength / 360, satStrength, valStrength] return ar
def arrayForImage(uri): res = 15 hueStrength = 1.0 satStrength = .5 valStrength = .4 au = absoluteSite(uri) jpg = restkit.Resource(au).get(size='thumb').body_string() i = Image.open(StringIO(jpg)) i = Image.blend(i, ImageOps.autocontrast(i, cutoff=5), .8) i = i.resize((res ,int(res*3/4)), Image.ANTIALIAS) ar = numpy.asarray(i, dtype='f') / 255 ar.shape = i.size[1], i.size[0], 3 ar = hsv_from_rgb(ar) * [hueStrength/360, satStrength, valStrength] return ar
def photosInSetPlus(self): """for use by other tools who want to draw some photos """ out = [] for p in self.desc.photos(): r = MediaResource(self.graph, p) try: s = r.getSize(sizes["thumb"]) thumbSize = {"thumbSize": dict(w=s[0], h=s[1])} except (ValueError, IOError, subprocess.CalledProcessError): thumbSize = {} out.append( dict(link=absoluteSite(self.desc.otherImageUrl(p)), uri=p, facts=self.facts(p), thumb="%s?size=thumb" % p, screen="%s?size=screen" % p, isVideo=self.desc.isVideo(p))) out[-1].update(thumbSize) return out
def photosInSetPlus(self): """for use by other tools who want to draw some photos """ out = [] for p in self.desc.photos(): r = MediaResource(self.graph, p) try: s = r.getSize(sizes["thumb"]) thumbSize = {"thumbSize" : dict(w=s[0], h=s[1])} except (ValueError, IOError, subprocess.CalledProcessError): thumbSize = {} out.append(dict( link=absoluteSite(self.desc.otherImageUrl(p)), uri=p, facts=self.facts(p), thumb="%s?size=thumb" % p, screen="%s?size=screen" % p, isVideo=self.desc.isVideo(p) )) out[-1].update(thumbSize) return out
def hiresArray(uri): jpg = restkit.Resource(absoluteSite(uri)).get(size='screen').body_string() i = Image.open(StringIO(jpg)).convert('L') ar = numpy.asarray(i, dtype='f') / 255 ar.shape = i.size[1], i.size[0] return ar