Skip to main content

Create and display images on Jupyter on the fly


Hi, let's rivisit some code.
This is for jupyter notebook.
Go in the cmd or terminal and start it so:
jupyter notebook

After the notebook is started write this code:


1. Import the modules


from IPython.core.display import display   # this is for jupyter
from PIL import Image as Img               # this to create images
from random import shuffle                 # this to shuffle the cards

2. Create a list with the name of the cards

Download the cards:
https://apprendimento.github.io/img/cdslittle4.rar
unzip them in the dir where the py file is and then in img/cdslittle4/

This is the code that creates a list of all the name images of the cards to be loaded



num = [str(x) for x in range(1,11)]
num[0] = 'ace'
seeds = ["_of_hearts","_of_clubs","_of_diamonds","_of_spades"]
cards = ["img/cdslittle4/"+x+s+".png" for x in num for s in seeds]


3. Shuffling


shuffle(cards)

4. A function to display 10 cards

First we pick 3 cards


p1 = cards.pop(),cards.pop(),cards.pop()

Then we create an image that will contains 3 cards:


new_im = Img.new('RGB', (270,130))   # 30*90 = 270  i.e. three cards
for each element in p1 we open the image of the card using Img.open(nameofthefile) and then using the paste method to paste each image in the new_img image object created to host the images. Each card is pasted 90 "px" to the right of the other to make them look one after another in the final product.


for elem in p1:
    for i in range(3):
        im=Img.open(p1[i])
        new_im.paste(im, (i*90,0))

5. The final step: displaying the image

We will not save the image (as we did in another post), but we will only display them (so, if we want to use it for a game, we will not occupy space on the hard drive saving space and time, I think)


display(new_im)

6. The output, in jupyter notebookm will be this:



Ok, if you want to save this file you should write this code:

new_im.save('p1.jpg')

Now you could display it also in this way

display(Image('3cards.png'))

It's to you to choose the method you need.

See ya... 1/1/2017

Comments

Popular posts from this blog

Widgets for Jupyter Notebook: a text input widget

Widgets for Jupyter notebook ¶ Let's import the module ipywidgets into the Jupyter Notebook from ipywidgets import widgets from ipywidgets import * from traitlets import * Now we import the display function from IPython ¶ let's attach a function to the event on_submit After we run this cell, we can go up and write something in the text widget and after you submit the text you wrote will be printed after the cell from IPython.display import display text = widgets . Text () display ( text ) def handle_submit ( sender ): print ( "Thank you for entering this text:" , text . value ) text . on_submit ( handle_submit ) Thank you for entering this text: Ciao

Image in Jupyter and PIL step by step

Hi, """ Hi, we will see a step by step tutorial about PIL and IPython.core.display modules to create images from other images and diplaying them in Jupyter notebook """ # What we will do # Create a card # 1. Take a pic of a heart # 2. Create an image blanck the size of a card 90*130 # 3. Paste the heart in the middle # 4. show the card """ As first step wi will simply display an image on the notebook. I will show two way to display the image with 'display' from IPhyton a. Using the open method of PIL.Image (named Img) b. Using the Image method from the IPython.core.display module """ # 1. Take the pic of a heart from IPython.core.display import Image , display from PIL import Image as Img heart = 'img/heart.png' display ( Image ( heart )) display ( Img . open ( heart )) # 2. Create an image blanck the size of a card 90*130 # 3. Paste the heart in the middle #...

Let's draw a circle with PIL in Python

Let's continue making our coding around PIL. Let's start with some basic drawing: a circle from PIL import Image , ImageDraw img = Image . new ( "RGB" ,( 60 , 60 ), 'white' ) dr = ImageDraw . Draw ( img ) dr . ellipse (( 0 , 0 , 60 , 60 ), 'yellow' ) img . show () this is the image produced *If you use jupyter notebook, just write img at the end to see the output.