2013-06-27 44 views
1

我計算圖像高度的服務器端提供動態圖像,但每一次的,而在HTML的高度變得太大:爲什麼在這個例子中圖像高度變得如此之大?

<div class="item_image" style="height: 1116px">

爲什麼這麼多1116px當圖片,一個服務器與get_serving_url其實並不1116px,所以我可能做在我的算法存在誤區:

class NewAdHandler(BaseHandler): 

    def get_ad(self, key): 
     data = memcache.get(key) 
     if data is not None: 
      return data 
     else: 
      data = Ad.get_by_id(long(key)) 
      memcache.add(key, data, 6000) 
      return data 

    def get_image(self, ad): 
     data = memcache.get(str(ad.key())) 
     if data is not None: 
      return data 
     else: 
      data = ad.matched_images.get() 
      memcache.add(str(ad.key()), data, 6000) 
      return data 

    def get_images(self, ad): 
     data = memcache.get(str(ad.key()) + 'images') 
     if data is not None: 
      return data 
     else: 
      data = ad.matched_images 
      memcache.add(str(ad.key()) + 'images', data, 6000) 
      return data 

    def get(self, id, html): 
     logging.debug('logged in %s', self.logged_in) 
     region = None 
     city = None 
     ad = self.get_ad(id) 
     if not ad or not ad.published: 
      self.error(404) 
      return 
     image = self.get_image(ad) 
     thumb_url = None 
     height = None#image.get_height() 
     #logging.debug('height %d', height) 
     maxheight = 80 

     if image: 
      img = images.Image(blob_key=str(image.primary_image.key())) 
      img.im_feeling_lucky() 
      img.execute_transforms(output_encoding=images.JPEG) 
      height = img.height 
      if height < 640: maxheight = height 


     logging.debug('height %d', height) 

     image_url = None 
     country = '' 
     if self.request.host.find('koolbusiness.com') > -1: country = 'India' 
     elif self.request.host.find('montao.com') > -1: country = 'Brasil' 
     elif self.request.host.find('hipheap.com') > -1: country = 'USA' 
     if image: 
      if image.primary_image: 
       try: 
        image_url = \ 
         images.get_serving_url(str(image.primary_image.key()), 
          size=640) 
        thumb_url = \ 
         images.get_serving_url(str(image.primary_image.key()), 
          size=120) 
       except Exception, e: 
        image_url = '/images/' + str(image.key().id()) \ 
         + '_small.jpg' 
      else: 
       image_url = '/images/' + str(image.key().id()) \ 
        + '_small.jpg' 
     imv = [] 
     for i in self.get_images(ad): 
      img = images.Image(blob_key=str(i.primary_image.key())) 

      img.im_feeling_lucky() 
      img.execute_transforms(output_encoding=images.JPEG) 
      #maxheight = img.height 
      #if img.height < 640: maxheight = 640 
      if img.height > maxheight: maxheight = img.height 
      if i.primary_image: 
       try: 
        i1 = \ 
         images.get_serving_url(str(i.primary_image.key())) 
        imv.append(i1) 
       except Exception, e: 
        i1 = '/images/' + str(image.key().id()) \ 
         + '_small.jpg' 
        imv.append(i1) 
     price = ad.price 
     if ad.geopt and not ad.city: 
      logging.info('geopt:' + str(ad.geopt)) 
      url = 'http://maps.googleapis.com/maps/api/geocode/json' \ 
       + '?latlng={},{}&sensor=false'.format(ad.geopt.lat, 
        ad.geopt.lon) 
      result = urlfetch.fetch(url) 
      jsondata = json.loads(result.content) 

      for result in jsondata['results']: 
       for component in result['address_components']: 
        if 'administrative_area_level_1' \ 
         in component['types']: 
         region = component['long_name'].replace('County' 
           , '') 
        if 'locality' in component['types']: 
         city = component['long_name'] 

      if ad.city != city: 
       ad.city = city 
       ad.put() 

      if ad.region != region: 
       ad.region = region 
       ad.put() 

      if ad.price: # and doesn't contain separators 
       try: 
        price = \ 
         i18n.I18n(self.request).format_decimal(int(ad.price)) 
       except Exception, e: 
        price = ad.price 
     else: 
      city = ad.city 
      region = ad.region # if ad.region eller get region 

     if region == None: 
      region = '' 

     if region == None: 
      region = '' 
     regionentity = montaomodel.Region.all().filter('name =', 
       region).get() 
     cityentity = montaomodel.City.all().filter('name =', city).get() 
     logging.debug('is logged in: %s', self.logged_in,) 
     self.render_jinja(
      'view_ad', 
      image_url=image_url,loggedin=self.logged_in,     user= self.current_user, 
      country = country, 
      region=ad.region, 
      regionentity=regionentity, 
      cityentity=cityentity, 
      city=city, 
      imv=imv,request=self.request, 
      len=len(imv),height=maxheight, 
      ad=ad,thumb_url=thumb_url, 
      price=price,VERSION=VERSION, 
      #user_url=(users.create_logout_url(self.request.uri) if users.get_current_user() else None), 
      admin=users.is_current_user_admin(), 
      linebreak_txt=(ad.text.replace('\n', '<br>' 
          ) if ad.text else None), 
      image=image, 
      logged_in = self.logged_in, 
      form=AddAdCityForm(), 
      form_url=self.request.url, 
      ) 

模板中的代碼是

{% if image_url %} 

     <!-- Main Images --> <div class="item_image" style="height: {{height}}px"> 

      <div class="item_arrow_left" style="height: 428px">    <i class="sprite_vi_arrow_left" style="margin-top: 200px"></i>  </div>  <div class="image_container">  <img src="{{image_url}}" id="main_image_0" alt="{{ad.title}}" title="Click for next image">    {% for im in imv %}  <img src="{{im}}" class="hidden" id="main_image_{{loop.index}}" alt="{{ad.title}}" class="thumb_image_single" title="Click for next image"> 
      {% endfor %} 

你能告訴我我能做些什麼嗎?該問題的實時視圖是here

回答

1

爲什麼你要指定身高:1116px ...身高:汽車應該照顧你需要的東西嗎?

謝謝 AB

+0

是的,它與高度:自動。非常感謝! –

相關問題