python类composite()的实例源码

watermark.py 文件源码 项目:DCRM 作者: 82Flex 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def apply_watermark(im, mark, position, opacity=1):
    """Adds a watermark to an image."""
    if opacity < 1:
        mark = reduce_opacity(mark, opacity)
    if im.mode != 'RGBA':
        im = im.convert('RGBA')
    # create a transparent layer the size of the image and draw the
    # watermark in that layer.
    layer = Image.new('RGBA', im.size, (0, 0, 0, 0))
    if position == 'tile':
        for y in range(0, im.size[1], mark.size[1]):
            for x in range(0, im.size[0], mark.size[0]):
                layer.paste(mark, (x, y))
    elif position == 'scale':
        # scale, but preserve the aspect ratio
        ratio = min(
            float(im.size[0]) / mark.size[0], float(im.size[1]) / mark.size[1])
        w = int(mark.size[0] * ratio)
        h = int(mark.size[1] * ratio)
        mark = mark.resize((w, h))
        layer.paste(mark, (round((im.size[0] - w) / 2), round((im.size[1] - h) / 2)))
    else:
        layer.paste(mark, position)
    # composite the watermark with the layer
    return Image.composite(layer, im, layer)
watermark.py 文件源码 项目:ScrapyImage 作者: donnki 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def mark(self, path, position=POSITION_BOTTOM_RIGHT):
        '''????????'''

        try:
            img = Image.open(path)
        except IOError:
            return None

        if img.size[0] < self._mosaic.size[0]:
            print 'width', img.size[0], self._mosaic.size[0]
            return None
        if img.size[1] < self._mosaic.size[1]:
            print 'height', img.size[1], self._mosaic.size[1]
            return None
        img_area = img.size[0] * img.size[1]
        mosaic_area = self._mosaic.size[0] * self._mosaic.size[1]
        ratio = 4
        if img_area < mosaic_area * ratio:
            return None

        self._locate(img, position)
        layer = Image.new('RGBA', img.size, (0, 0, 0, 0))
        layer.paste(self._mosaic, self.box)

        return Image.composite(layer, img, layer)
ImageChops.py 文件源码 项目:CNCGToolKit 作者: cineuse 项目源码 文件源码 阅读 32 收藏 0 点赞 0 评论 0
def composite(image1, image2, mask):
    "Create composite image by blending images using a transparency mask"

    return Image.composite(image1, image2, mask)

##
# Offset image data.
# <p>
# Returns a copy of the image where data has been offset by the given
# distances.  Data wraps around the edges.  If yoffset is omitted, it
# is assumed to be equal to xoffset.
#
# @param image Source image.
# @param xoffset The horizontal distance.
# @param yoffset The vertical distance.  If omitted, both
#    distances are set to the same value.
# @return An Image object.
ImageChops.py 文件源码 项目:InstagramPosting 作者: LeviParadis 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def composite(image1, image2, mask):
    "Create composite image by blending images using a transparency mask"

    return Image.composite(image1, image2, mask)

##
# Offset image data.
# <p>
# Returns a copy of the image where data has been offset by the given
# distances.  Data wraps around the edges.  If yoffset is omitted, it
# is assumed to be equal to xoffset.
#
# @param image Source image.
# @param xoffset The horizontal distance.
# @param yoffset The vertical distance.  If omitted, both
#    distances are set to the same value.
# @return An Image object.
ImageChops.py 文件源码 项目:ngx_status 作者: YoYoAdorkable 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def composite(image1, image2, mask):
    "Create composite image by blending images using a transparency mask"

    return Image.composite(image1, image2, mask)

##
# Offset image data.
# <p>
# Returns a copy of the image where data has been offset by the given
# distances.  Data wraps around the edges.  If yoffset is omitted, it
# is assumed to be equal to xoffset.
#
# @param image Source image.
# @param xoffset The horizontal distance.
# @param yoffset The vertical distance.  If omitted, both
#    distances are set to the same value.
# @return An Image object.
main.py 文件源码 项目:Nightchord 作者: theriley106 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def draw_text_with_halo(img, position, text, font, col, halo_col):
    halo = Image.new('RGBA', img.size, (0, 0, 0, 0))
    ImageDraw.Draw(halo).text(position, text, font = font, fill = halo_col)
    blurred_halo = halo.filter(ImageFilter.BLUR)
    ImageDraw.Draw(blurred_halo).text(position, text, font = font, fill = col)
    return Image.composite(img, blurred_halo, ImageChops.invert(blurred_halo))
simple.py 文件源码 项目:jiango 作者: yefei 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def render(self, stream, value):
        im = self.im.copy()
        im2 = self.im.copy()
        x = 0
        r_i = sum(ord(c) for c in value)  # ????????????????
        for c in value:
            fgimg = Image.new('RGBA', self.size, self.font_color)
            charimg = Image.new('L', self.font.getsize(c), '#000000')

            draw = ImageDraw.Draw(charimg)
            draw.text((0, 0), c, font=self.font, fill='#ffffff')

            r = (int(time()) / 1000 + ord(c) + r_i) % 40 - 20  # ???????????????
            charimg = charimg.rotate(r, expand=1, resample=Image.BICUBIC)
            charimg = charimg.crop(charimg.getbbox())

            maskimg = Image.new('L', self.size)
            y = (im2.size[1] - charimg.size[1]) / 2
            maskimg.paste(charimg, (x, y, charimg.size[0] + x, charimg.size[1] + y))

            im2 = Image.composite(fgimg, im2, maskimg)
            x += charimg.size[0] - 5  # - X???

        # ??????? x ??
        center = (im.size[0] - x) / 2
        im.paste(im2, (center, 0, im2.size[0]+center, im2.size[1]))

        im.save(stream, self.image_type)
ImageChops.py 文件源码 项目:CNCGToolKit 作者: cineuse 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def blend(image1, image2, alpha):
    "Blend two images using a constant transparency weight"

    return Image.blend(image1, image2, alpha)

##
# Create composite using transparency mask.
# <p>
# Same as the <b>composite</b> function in the <b>Image</b> module.
ImageChops.py 文件源码 项目:InstagramPosting 作者: LeviParadis 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def blend(image1, image2, alpha):
    "Blend two images using a constant transparency weight"

    return Image.blend(image1, image2, alpha)

##
# Create composite using transparency mask.
# <p>
# Same as the <b>composite</b> function in the <b>Image</b> module.
ImageChops.py 文件源码 项目:ngx_status 作者: YoYoAdorkable 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def blend(image1, image2, alpha):
    "Blend two images using a constant transparency weight"

    return Image.blend(image1, image2, alpha)

##
# Create composite using transparency mask.
# <p>
# Same as the <b>composite</b> function in the <b>Image</b> module.
pildriver.py 文件源码 项目:ngx_status 作者: YoYoAdorkable 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def do_composite(self):
        """usage: composite <image:pic1> <image:pic2> <image:mask>

        Replace two images and a mask with their composite.
        """
        image1 = self.do_pop()
        image2 = self.do_pop()
        mask = self.do_pop()
        self.push(Image.composite(image1, image2, mask))
reflection.py 文件源码 项目:DCRM 作者: 82Flex 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def add_reflection(im, bgcolor="#00000", amount=0.4, opacity=0.6):
    """ Returns the supplied PIL Image (im) with a reflection effect

    bgcolor  The background color of the reflection gradient
    amount   The height of the reflection as a percentage of the orignal image
    opacity  The initial opacity of the reflection gradient

    Originally written for the Photologue image management system for Django
    and Based on the original concept by Bernd Schlapsi

    """
    # convert bgcolor string to rgb value
    background_color = ImageColor.getrgb(bgcolor)

    # copy orignial image and flip the orientation
    reflection = im.copy().transpose(Image.FLIP_TOP_BOTTOM)

    # create a new image filled with the bgcolor the same size
    background = Image.new("RGB", im.size, background_color)

    # calculate our alpha mask
    start = int(255 - (255 * opacity))  # The start of our gradient
    steps = int(255 * amount)  # the number of intermedite values
    increment = (255 - start) / float(steps)
    mask = Image.new('L', (1, 255))
    for y in range(255):
        if y < steps:
            val = int(y * increment + start)
        else:
            val = 255
        mask.putpixel((0, y), val)
    alpha_mask = mask.resize(im.size)

    # merge the reflection onto our background color using the alpha mask
    reflection = Image.composite(background, reflection, alpha_mask)

    # crop the reflection
    reflection_height = int(im.size[1] * amount)
    reflection = reflection.crop((0, 0, im.size[0], reflection_height))

    # create new image sized to hold both the original image and the reflection
    composite = Image.new("RGB", (im.size[0], im.size[1] + reflection_height), background_color)

    # paste the orignal image and the reflection into the composite image
    composite.paste(im, (0, 0))
    composite.paste(reflection, (0, im.size[1]))

    # return the image complete with reflection effect
    return composite


问题


面经


文章

微信
公众号

扫码关注公众号