예제 #1
0
파일: imageSet.py 프로젝트: drewp/photo
    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) + """
예제 #2
0
    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) + """
예제 #3
0
파일: diff.py 프로젝트: drewp/photo
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
예제 #4
0
파일: diff.py 프로젝트: drewp/photo
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
예제 #5
0
파일: diff.py 프로젝트: drewp/photo
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
예제 #6
0
파일: diff.py 프로젝트: drewp/photo
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
예제 #7
0
파일: imageSet.py 프로젝트: drewp/photo
 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
예제 #8
0
 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
예제 #9
0
파일: diff.py 프로젝트: drewp/photo
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
예제 #10
0
파일: diff.py 프로젝트: drewp/photo
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