当前位置 博文首页 > python 对图片进行简单的处理

    python 对图片进行简单的处理

    作者:临时营地 时间:2021-08-06 18:31

    目录
    • 安装Pillow包
    • 图片划线
    • 图片写字
    • 图片加图片水印
    • 图片模糊
    • 图片截取
    • 总结

    安装Pillow包

    pip install Pillow
    

    图片划线

    from PIL import Image, ImageDraw
    im = Image.open("blur.jpg")
    draw = ImageDraw.Draw(im)
    draw.line((0, 0) + im.size, fill=128)
    draw.line((0, im.size[1], im.size[0], 0), fill=128)
    del draw
    # write to stdout
    im.save("blur.jpg", "PNG")
    

    图片写字

    有的时候我们可能需要往图片上写一些文字,比如说水印什么的,只要选择好我们本地的字体文件,直接就可以在图片上写字了

    from PIL import ImageFont, ImageDraw,Image, ImageDraw
    image = Image.open("image.png").convert('RGBA')
    txt=Image.new('RGBA', image.size, (0,0,0,0))
    font=ImageFont.truetype("c:/Windows/fonts/Tahoma.ttf", 20)
    draw=ImageDraw.Draw(txt)
    draw.text((txt.size[0]-100, txt.size[1]-30), "linshiyingdi", font=font)
    out=Image.alpha_composite(image, txt)
    out.save("imageWithText.png", "png")
    out.show()
    

    图片加图片水印

    文字水印有时候不好看,想改成图片水印,也是可以的

    from PIL import ImageFont, ImageDraw, Image, ImageDraw
    
    image = Image.open("image.png")
    logo = Image.open("logo.png")
    layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
    layer.paste(logo, (50, 60))
    out = Image.composite(layer, image, layer)
    out.save("imageWithLogo.png", "png")
    out.show()
    

    如果水印图片过大时,可以直接缩小点,直接使用图片自带的thumbnail方法就行

    from PIL import ImageFont, ImageDraw, Image, ImageDraw
    
    image = Image.open("image.png")
    logo = Image.open("logo.png")
    logo.thumbnail((200, 100))
    layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
    layer.paste(logo, (50, 60))
    out = Image.composite(layer, image, layer)
    out.save("imageWithLogo.png", "png")
    out.show()
    

    如下图,我们的水印图片放到了左上角,大小也非常合适。

    图片模糊

    from PIL import Image, ImageFilter
    # 打开一个jpg图像文件,直接放到当前路径下方便点:
    im = Image.open('2822.jpg')
    # 应用模糊滤镜:
    im2 = im.filter(ImageFilter.BLUR)
    im2.save('blur.jpg', 'jpeg')
    

    图片截取

    from PIL import Image
    img = Image.open("image.png")
    print(img.size)
    cropped = img.crop((0, 0, 1303, 734))  # (left, upper, right, lower)
    cropped.save("imageCropped.png")
    

    可以看到的是如果这个图片的长度和宽度比1303和734小的时候会有透明的填充,感觉很难看,可以将对应的长度和宽度和这两个数字做个判断

    from PIL import Image
    
    img = Image.open("image.png")
    print(img.size)
    right = 1303
    lower = 734
    if img.size[0] < 1303:
        right = img.size[0]
    if img.size[1] < 734:
        lower = img.size[1]
    cropped = img.crop((0, 0, right, lower))  # (left, upper, right, lower)
    cropped.save("imageCropped.png")
    
    

    这样白边就被干掉了

    总结

    人生苦短,我用 Python,在强大的Pillow帮助下,我们只需几行代码就可以实现图片的各种处理。

    jsjbwy