Reading list Switch to dark mode

    Python Imaging Library-(PIL) Examples

    Updated 24 April 2018

    The PIL(Python Imaging Library) is the python library which primarily uses for
    for the image manipulation like create, resize, merge etc.

    This blog post contains the code snippets related to PIL.

    How to resize an image

    import os
    from PIL import Image
    img = Image.open("original.png")
    #Open the original Image
    size = img.size
    img = img.resize(size,Image.ANTIALIAS)
    #Resize the original Image
    img.save("result.jpg",optimize=True,quality=95)
    #Save  the result image
    
    
    
    
    
    
    

    ==>How to add transparent image watermarkup on an image:

    import os
    from PIL import Image
    img = Image.open("original.jpg") #Open the original Image
    width, height = img.size #Get the image width, height 
    image_mode = img.mode #Get the image mode 
    
    
    watermark = Image.open('watermark_image.jpg').convert("RGBA")
    # watermark = watermark.resize((width, height), Image.ANTIALIAS)
    position_left,position_top = 10 ,10 #Watermark position
    position=(position_left,position_top)
    orientation = 'horizontal' #Watermark orientation
    if orientation=='vertical':  # In case vertical, rotate the image by 45 degree
        angle = 45
        watermark = watermark.rotate( angle, expand=1 )
        img.paste(watermark ,position,watermark)
    else:
        img.paste(im = watermark,box= position,mask=0)
        
        
    transparent = Image.new(mode = 'RGBA', size = (width, height), color = (0,0,0,0))
    # Create a new transparent image
    transparent.paste(img, (0,0))
    # paste the original image
    
    transparent.paste(watermark, position, mask=watermark)
    # paste the watermark image
    
    if image_mode=='RGB':
        transparent = transparent.convert(image_mode)
    else:
        transparent = transparent.convert('P')
    transparent.save("result.jpg",optimize=True,quality=95)
    #Save  the result image
    
    
    
    
    

    ==>How to add text watermarkup on an image:

    from PIL import Image
    from PIL import Image
    from PIL import ImageEnhance
    from PIL import ImageDraw, ImageFont
    img = Image.open("original.jpg")
    margin_left,margin_top = img.size
    width, height = img.size
    image_mode = img.mode
    
    position_left,position_top = 10 ,10
    position=(position_left,position_top)
    fill = (0,0,0)
    #Watermark text color
    watermark = Image.new("RGBA", img.size, color = (0, 0, 0, 0))
    #Create a Watermark image
    
    waterdraw = ImageDraw.ImageDraw(watermark, "RGBA")
    #Create  a waterdraw for text
    
    font_path = 'Lato-HaiIta-webfont.ttf'
    #Image font path url
    
    txt = 'example.com'
    #Watermark text
    size = max(1, 100)
    
    #####################################
    # this part will reduce the watermark text size
    fontsize = 1
    img_fraction = .40
    font_obj = ImageFont.truetype(font_path, 1)
    while font_obj.getsize(txt)[0] < img_fraction*margin_left:
        fontsize += 1
        font_obj = ImageFont.truetype(font_path, fontsize)
    fontsize -= 1
    #####################################
    font_obj = ImageFont.truetype(font_path, fontsize)
    #Create the font obj with  fonth type and size
    
    waterdraw.text(position, text = txt, fill=fill,font=font_obj )
    positioning = 'horizontal'
    if positioning=='vertical':
        angle = 45
        watermark = watermark.rotate( angle, expand=1 )
    
    transparent_mode = 'RGBA' if image_mode=='P' else 'RGB'
    
    transparent = Image.new(mode = transparent_mode, size =img.size, color = (0,0,0,0))
    #Create the  new image(result image)
    transparent.paste(img, (0,0))
    #Paste the original image
    transparent.paste(watermark, None, watermark)
    #Paste the watermark image
    transparent.save("final.jpg",optimize=True,quality=95)
    #Save  the result image
    
    
    

    That’s all for today. I hope this blog will help you. I’d be very grateful if you’d write your opinions, comments, and suggestions to keep the page updated and interesting.

    You may also like our post on Using StringIO and BytesIO for managing data as the file object.

    Start your headless eCommerce
    now.
    Find out More
    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    2 comments

  • Mick
    • Megha Joshi (Moderator)
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home