当前位置: 首页>>代码示例>>Python>>正文


Python Image.copy方法代码示例

本文整理汇总了Python中wand.image.Image.copy方法的典型用法代码示例。如果您正苦于以下问题:Python Image.copy方法的具体用法?Python Image.copy怎么用?Python Image.copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在wand.image.Image的用法示例。


在下文中一共展示了Image.copy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: ImportMedia

# 需要导入模块: from wand.image import Image [as 别名]
# 或者: from wand.image.Image import copy [as 别名]
class ImportMedia(object):
    """
    Import new photos: create JPEG, XMP and thumbnail files, add to database
    """

    PROXY_FULLSIZE = 0
    PROXY_THUMBNAIL = 1
    PROXY_WEBSIZED = 2

    # outrageously slow, exec()s ufraw-batch in newer versions
    def _create_proxy_wand(self, source, dest, mode):
        # load image if not yet done
        if not self.image:
            try:
                self.image = Image(filename=source)
            except Exception as e:
                logging.error('cannot read {}: {}'.format(source, e.args[0]))
                raise e

        # copy bitmap, we may need it again
        image = self.image.convert('jpeg')

        # resize
        if mode == self.PROXY_FULLSIZE:
            pass
        elif mode == self.PROXY_THUMBNAIL:
            image.transform(resize=settings.THUMBNAILSIZE)
        elif mode == self.PROXY_WEBSIZED:
            image.transform(resize=settings.WEBSIZE)

        try:
            # Wand does auto-rotate, but doesn't fix EXIF data... m(
            image.strip()
            image.save(filename=dest)
        except (Exception, IOError) as e:
            logging.error('Error: cannot write {}: {}'.format(dest, e.args[0]))
            raise e

    def _create_proxy_rawpy(self, source, dest, mode):
        # maybe Pillow supports this file type directly?
        if not self.image:
            try:
                self.image = Image.open(source)
            except IOError:
                pass
            except Exception as e:
                logging.error('cannot read {}: {}'.format(source, e.args[0]))
                raise e

        # obviously not, try decoding as Raw
        if not self.image:
            try:
                raw = rawpy.imread(source)
                rgb = raw.postprocess(use_camera_wb=True, no_auto_bright=True)
                self.image = Image.fromarray(rgb)
            except Exception as e:
                logging.error('cannot read {}: {}'.format(source, e.args[0]))
                raise e

        image = self.image.copy()
        if mode == self.PROXY_FULLSIZE:
            pass
        elif mode == self.PROXY_THUMBNAIL:
            image.thumbnail(settings.THUMBNAILSIZE)
        elif mode == self.PROXY_WEBSIZED:
            image.thumbnail(settings.WEBSIZE)

        try:
            image.save(dest)
        except Exception as e:
            logging.error('cannot write {}: {}'.format(dest, e.args[0]))

    def create_proxy(self, source, dest, mode):
        logging.info('called for {}, {}, {}'.format(source, dest, mode))
        if os.path.isfile(dest) and not self.force:
            return

        # just link fullsize image if JPEG and orientation is normal
        is_jpeg = os.path.splitext(source)[1].lower() in ('.jpg', '.jpeg')
        orientation = self.exif.get_orientation()
        logging.debug('EXIF Orientation: {}'.format(orientation.value_nick))

        if mode == self.PROXY_FULLSIZE and is_jpeg and orientation == orientation.NORMAL:
            try:
                os.unlink(dest)
            except Exception as e:
                pass

            try:
                os.link(source, dest)
            except Exception as e:
                logging.error('cannot link {} to {}: {}'.format(source, dest, e.args[0]))
                raise e

            return

        if settings.IMAGE_LIB == 'wand':
            self._create_proxy_wand(source, dest, mode)
        elif settings.IMAGE_LIB == 'rawpy':
            self._create_proxy_rawpy(source, dest, mode)
#.........这里部分代码省略.........
开发者ID:woelfisch,项目名称:YoteCache,代码行数:103,代码来源:importer.py


注:本文中的wand.image.Image.copy方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。