コード例 #1
0
    def get(self, version='v1'):

        image_id = self.request.get('id')
        if image_id == '':
            return self.error(404)

        if version not in ('v1', 'v2', 'v3'):
            return self.error(501)

        if len(image_id) == 6:
            image_id = hashlib.md5('%s-%s' %
                                   (SECRET_IMAGE_KEY, image_id)).hexdigest()

        thumbnail = memcache.get('cached_original_%s_%s' % (version, image_id))
        if thumbnail is None:
            original_image_query = OriginalImage().all()
            original_image_query.filter('access_key =', image_id)
            original_image = original_image_query.get()

            if original_image is None:
                memcache.add('cached_original_%s_%s' % (version, image_id),
                             404, 3600)
                return self.error(404)

            if original_image.archive_list_key.delete_flg:
                memcache.add('cached_original_%s_%s' % (version, image_id),
                             404, 3600)
                return self.error(404)

            img = images.Image(original_image.image)

            if version == 'v2':
                img.resize(width=640)
                #img.im_feeling_lucky()
                thumbnail = img.execute_transforms(output_encoding=images.PNG)
                thumbnail = convert_square(thumbnail, 640, 640)

                # Workaround
                img = images.Image(thumbnail)
                img.resize(width=640)
                thumbnail = img.execute_transforms(output_encoding=images.JPEG)
            else:
                img.resize(width=320)
                #img.im_feeling_lucky()
                thumbnail = img.execute_transforms(output_encoding=images.JPEG)
                #thumbnail = convert_square(thumbnail, 320, 320)

            memcache.add('cached_original_%s_%s' % (version, image_id),
                         thumbnail, 3600)

            logging.info('Original from DB. id: %s' % image_id)
        else:
            logging.info('Original from memcache. id: %s' % image_id)

            if thumbnail == 404:
                return self.error(404)

        self.response.headers['Content-Type'] = 'image/jpeg'
        self.response.out.write(thumbnail)
コード例 #2
0
ファイル: api.py プロジェクト: Atrac613/kesikesi-GAE
 def get(self, version='v1'):
   
     image_id = self.request.get('id')
     if image_id == '':
         return self.error(404)
     
     if version not in ('v1', 'v2', 'v3'):
         return self.error(501)
     
     if len(image_id) == 6:
         image_id = hashlib.md5('%s-%s' % (SECRET_IMAGE_KEY, image_id)).hexdigest()
     
     thumbnail = memcache.get('cached_original_%s_%s' % (version, image_id))
     if thumbnail is None:
         original_image_query = OriginalImage().all()
         original_image_query.filter('access_key =', image_id)
         original_image = original_image_query.get()
         
         if original_image is None:
             memcache.add('cached_original_%s_%s' % (version, image_id), 404, 3600)
             return self.error(404)
         
         if original_image.archive_list_key.delete_flg:
             memcache.add('cached_original_%s_%s' % (version, image_id), 404, 3600)
             return self.error(404)
         
         img = images.Image(original_image.image)
         
         if version == 'v2':
             img.resize(width=640)
             #img.im_feeling_lucky()
             thumbnail = img.execute_transforms(output_encoding=images.PNG)
             thumbnail = convert_square(thumbnail, 640, 640)
             
             # Workaround
             img = images.Image(thumbnail)
             img.resize(width=640)
             thumbnail = img.execute_transforms(output_encoding=images.JPEG)
         else:
             img.resize(width=320)
             #img.im_feeling_lucky()
             thumbnail = img.execute_transforms(output_encoding=images.JPEG)
             #thumbnail = convert_square(thumbnail, 320, 320)
         
         memcache.add('cached_original_%s_%s' % (version, image_id), thumbnail, 3600)
         
         logging.info('Original from DB. id: %s' % image_id)
     else:
         logging.info('Original from memcache. id: %s' % image_id)
         
         if thumbnail == 404:
             return self.error(404)
     
     self.response.headers['Content-Type'] = 'image/jpeg'
     self.response.out.write(thumbnail)
コード例 #3
0
    def get(self):
        image_key = self.request.get('id')
        user_id = self.request.get('user_id')

        if image_key == '':
            return self.error(404)

        archive_list_query = ArchiveList().all()
        archive_list_query.filter('image_key =', image_key)
        archive_list_query.filter('user_id =', user_id)
        archive_list = archive_list_query.get()

        if archive_list is None:
            return self.error(404)

        mask_image_key = hashlib.md5('%s-%s' %
                                     (SECRET_MASK_KEY, image_key)).hexdigest()
        mask_image_query = MaskImage().all()
        mask_image_query.filter('access_key =', mask_image_key)
        mask_image = mask_image_query.get()
        mask_image.delete()

        original_image_key = hashlib.md5(
            '%s-%s' % (SECRET_IMAGE_KEY, image_key)).hexdigest()
        original_image_query = OriginalImage().all()
        original_image_query.filter('access_key =', original_image_key)
        original_image = original_image_query.get()
        original_image.delete()

        archive_list.delete()

        memcache.delete('cached_mask_%s' % mask_image_key)
        memcache.delete('cached_original_%s' % original_image_key)
        memcache.delete('cached_image_%s' % image_key)

        data = {'state': True}

        json_data = json.dumps(data, ensure_ascii=False)
        self.response.content_type = 'application/json'
        self.response.out.write(json_data)
コード例 #4
0
ファイル: api.py プロジェクト: Atrac613/kesikesi-GAE
 def get(self):
     image_key = self.request.get('id')
     user_id = self.request.get('user_id')
     
     if image_key == '':
         return self.error(404)
     
     archive_list_query = ArchiveList().all()
     archive_list_query.filter('image_key =', image_key)
     archive_list_query.filter('user_id =', user_id)
     archive_list = archive_list_query.get()
     
     if archive_list is None:
         return self.error(404)
     
     mask_image_key = hashlib.md5('%s-%s' % (SECRET_MASK_KEY, image_key)).hexdigest()
     mask_image_query = MaskImage().all()
     mask_image_query.filter('access_key =', mask_image_key)
     mask_image = mask_image_query.get()
     mask_image.delete()
     
     original_image_key = hashlib.md5('%s-%s' % (SECRET_IMAGE_KEY, image_key)).hexdigest()
     original_image_query = OriginalImage().all()
     original_image_query.filter('access_key =', original_image_key)
     original_image = original_image_query.get()
     original_image.delete()
     
     archive_list.delete()
     
     memcache.delete('cached_mask_%s' % mask_image_key)
     memcache.delete('cached_original_%s' % original_image_key)
     memcache.delete('cached_image_%s' % image_key)
     
     data = {'state': True}
         
     json_data = json.dumps(data, ensure_ascii=False)
     self.response.content_type = 'application/json'
     self.response.out.write(json_data)
コード例 #5
0
ファイル: api.py プロジェクト: Atrac613/kesikesi-GAE
 def get(self):
   
     image_key = self.request.get('id')
     if image_key == '':
         return self.error(404)
     
     style = self.request.get('style')
     if style in ('icon48', 'icon120', 'size240', 'size300'):
         cache_key = 'cached_image_%s_%s' % (image_key, style)
     else:
         style = None
         cache_key = 'cached_image_%s' % image_key
         
     logging.info('memcache_key: %s' % cache_key)
     thumbnail = memcache.get(cache_key)
         
     if thumbnail is None:
         archive_list_query = ArchiveList().all()
         archive_list_query.filter('image_key =', image_key)
         archive_list_query.filter('delete_flg =', False)
         archive_list = archive_list_query.get()
         
         if archive_list is None:
             memcache.add(cache_key, 404, 3600)
             return self.error(404)
         
         mask_image_key = hashlib.md5('%s-%s' % (SECRET_MASK_KEY, image_key)).hexdigest()
         mask_image_query = MaskImage().all()
         mask_image_query.filter('access_key =', mask_image_key)
         mask_image = mask_image_query.get()
         
         original_image_key = hashlib.md5('%s-%s' % (SECRET_IMAGE_KEY, image_key)).hexdigest()
         original_image_query = OriginalImage().all()
         original_image_query.filter('access_key =', original_image_key)
         original_image = original_image_query.get()
         
         if mask_image is None or original_image is None:
             return self.error(404)
         
         mask_image = images.Image(mask_image.image)
         mask_image.resize(width=640)
         #mask_image.im_feeling_lucky()
         new_mask_image = mask_image.execute_transforms(output_encoding=images.PNG)
         new_mask_image = convert_square(new_mask_image, 640, 640)
         
         original_image = images.Image(original_image.image)
         original_image.resize(width=640)
         #original_image.im_feeling_lucky()
         new_original_image = original_image.execute_transforms(output_encoding=images.PNG)
         new_original_image = convert_square(new_original_image, 640, 640)
         
         all_images = []
         all_images.append((new_original_image, 0, 0, 1.0, images.TOP_LEFT))
         all_images.append((new_mask_image, 0, 0, 1.0, images.TOP_LEFT))
         
         image_c = images.composite(all_images, 640, 640, 0, images.PNG, 100)
         
         img = images.Image(image_c)
         
         width = 320
         if style is not None:
             if style == 'size240':
                 width = 240
             elif style == 'size300':
                 width = 300
                 
         img.resize(width=width)
         #img.im_feeling_lucky()
         thumbnail = img.execute_transforms(output_encoding=images.JPEG)
         
         if style is not None:
             if style == 'icon48':
                 thumbnail = convert_square(thumbnail, 48, 48)
             elif style == 'icon120':
                 thumbnail = convert_square(thumbnail, 120, 120)
         
         memcache.add(cache_key, thumbnail, 3600)
         
         logging.info('Image from DB. image_key: %s' % image_key)
     else:
         logging.info('Image from memcache. image_key: %s' % image_key)
         
         if thumbnail == 404:
             return self.error(404)
     
     self.response.headers['Content-Type'] = 'image/jpeg'
     self.response.out.write(thumbnail)
コード例 #6
0
    def get(self):

        image_key = self.request.get('id')
        if image_key == '':
            return self.error(404)

        style = self.request.get('style')
        if style in ('icon48', 'icon120', 'size240', 'size300'):
            cache_key = 'cached_image_%s_%s' % (image_key, style)
        else:
            style = None
            cache_key = 'cached_image_%s' % image_key

        logging.info('memcache_key: %s' % cache_key)
        thumbnail = memcache.get(cache_key)

        if thumbnail is None:
            archive_list_query = ArchiveList().all()
            archive_list_query.filter('image_key =', image_key)
            archive_list_query.filter('delete_flg =', False)
            archive_list = archive_list_query.get()

            if archive_list is None:
                memcache.add(cache_key, 404, 3600)
                return self.error(404)

            mask_image_key = hashlib.md5(
                '%s-%s' % (SECRET_MASK_KEY, image_key)).hexdigest()
            mask_image_query = MaskImage().all()
            mask_image_query.filter('access_key =', mask_image_key)
            mask_image = mask_image_query.get()

            original_image_key = hashlib.md5(
                '%s-%s' % (SECRET_IMAGE_KEY, image_key)).hexdigest()
            original_image_query = OriginalImage().all()
            original_image_query.filter('access_key =', original_image_key)
            original_image = original_image_query.get()

            if mask_image is None or original_image is None:
                return self.error(404)

            mask_image = images.Image(mask_image.image)
            mask_image.resize(width=640)
            #mask_image.im_feeling_lucky()
            new_mask_image = mask_image.execute_transforms(
                output_encoding=images.PNG)
            new_mask_image = convert_square(new_mask_image, 640, 640)

            original_image = images.Image(original_image.image)
            original_image.resize(width=640)
            #original_image.im_feeling_lucky()
            new_original_image = original_image.execute_transforms(
                output_encoding=images.PNG)
            new_original_image = convert_square(new_original_image, 640, 640)

            all_images = []
            all_images.append((new_original_image, 0, 0, 1.0, images.TOP_LEFT))
            all_images.append((new_mask_image, 0, 0, 1.0, images.TOP_LEFT))

            image_c = images.composite(all_images, 640, 640, 0, images.PNG,
                                       100)

            img = images.Image(image_c)

            width = 320
            if style is not None:
                if style == 'size240':
                    width = 240
                elif style == 'size300':
                    width = 300

            img.resize(width=width)
            #img.im_feeling_lucky()
            thumbnail = img.execute_transforms(output_encoding=images.JPEG)

            if style is not None:
                if style == 'icon48':
                    thumbnail = convert_square(thumbnail, 48, 48)
                elif style == 'icon120':
                    thumbnail = convert_square(thumbnail, 120, 120)

            memcache.add(cache_key, thumbnail, 3600)

            logging.info('Image from DB. image_key: %s' % image_key)
        else:
            logging.info('Image from memcache. image_key: %s' % image_key)

            if thumbnail == 404:
                return self.error(404)

        self.response.headers['Content-Type'] = 'image/jpeg'
        self.response.out.write(thumbnail)