Image Manipulation in Python [ A complete guide to Pillow ]

2024 ж. 16 Мам.
63 883 Рет қаралды

Basically everything you need to know about image manipulation in Python with Pillow [PIL]. By the end of the video you should be comfortable manipulating images in just about every way.
If you want to support me: / clearcode
(You also get lots of perks)
Social stuff:
Twitter - / clear_coder
Discord - / discord
Timestamps
00:00:00 - Intro
00:01:22 - Basic image operations
00:09:10 - Basic image manipulation
00:22:45 - Filters and image enhancements
00:38:19 - Colors in Pillow [ Deepdive ]
01:11:22 - Image operations [ ImageOps ]
01:25:01 - Deformer
1:41:14 - Drawing shapes
1:54:35 - Combining images + ImageChops
02:09:46 - Masks
Github
github.com/clear-code-project...
Pastebin
1 Basics - pastebin.com/f24F9w7x
2 Basic_manipulation - pastebin.com/F2ht4D1S
3 Enhance - pastebin.com/mRaBRzNt
5 Filters - pastebin.com/xEw9sxBM
6 Colors - pastebin.com/TLqzCSSB
7 ImageOps - pastebin.com/g0HgW8zG
8 Deformer - pastebin.com/zRE250cB
9 - Shapes - pastebin.com/bMYxFfaA
9 - pastebin.com/TyFVQ2LA

Пікірлер
  • Christian, you are a fantastic instructor. I bought your course on tkinter and I can't get over how clear and concise you are in your instruction. I look forward to digging into more of your courses. Thanks for the hard work you put into these courses.

    @sozno4222@sozno42224 ай бұрын
  • the first tutorial so simple and clear on python, thank you so much, I literally struggled several weeks before to find smth like this

    @thinkmediadeeper@thinkmediadeeper Жыл бұрын
  • I'm so grateful to see this course. I really appreciate your response 🙏.

    @ahmedsaliem7041@ahmedsaliem70419 ай бұрын
  • Hey Clear Code, thanks a lot for such great content. Today I discovered your channel. The explanation and presentation are so clean.

    @djohnworthy1040@djohnworthy1040 Жыл бұрын
  • Excellent video! It helped me a lot, thank you very much! 🥰

    @davipereira2533@davipereira25338 күн бұрын
  • Thank you Sir, let's add this to my watch list 🙃

    @YassFreeks@YassFreeks2 жыл бұрын
  • Highly appreciated you have saved my time

    @alisaleh1900@alisaleh1900 Жыл бұрын
  • Thank you for making this video

    @IT-tx8sg@IT-tx8sg Жыл бұрын
  • Thanks, very clear!!!

    @tortokaeva@tortokaeva Жыл бұрын
  • Great Tutorial

    @sksahil4374@sksahil4374 Жыл бұрын
  • This is the greatest overview of a module/library I have ever seen. I have all my files saved from this and constantly just go back to copy, paste, and edit. Thank you, you are incredible.

    @c0nsumption@c0nsumption Жыл бұрын
  • An awesome channel!

    @DarkAcademyUniversity@DarkAcademyUniversity2 ай бұрын
  • Nice & informaative video

    @on2k23nm@on2k23nm3 ай бұрын
  • thank you, the thumbnail is very catchy

    @serbrawl7981@serbrawl79812 жыл бұрын
  • Update: In image flip/transpose, *Image.Transpose.* isn't used anymore. Instead we can use *Image.* where the can be TRANSPOSE, FLIP_LEFT_RIGHT etc.

    @su1nta@su1nta11 ай бұрын
  • Thank you!

    @ashuzon@ashuzon2 ай бұрын
  • Question. Is there some kind of what you see is what you get tool to help with complicated manipulations? especially ones that involve multiple layers and text? doing it by hand takes a lot of trial and error

    @Abdullah_N1987@Abdullah_N1987 Жыл бұрын
  • In what folder should I put my image files?

    @amongussussybaka69420@amongussussybaka694208 ай бұрын
  • Hello. What do you use to draw on the screen?

    @ticris@ticris Жыл бұрын
  • i creat app py pillw and tkinter lib but i have a problim how i can use properties the image after add the image in the form thanks alot

    @usamaalshahmani-du3nw@usamaalshahmani-du3nw Жыл бұрын
  • is it possible to highlight image on a photo in certain aria? like to highlight a dog on the photo in one click?

    @invisiblealex007@invisiblealex00711 ай бұрын
  • Hey, can you make a tutorial on how to make a game with java! That would be really cool.

    @raghavsood28@raghavsood28 Жыл бұрын
  • Thanks!

    @johnkoepke7987@johnkoepke7987Ай бұрын
    • thank you so much! :)

      @ClearCode@ClearCodeАй бұрын
  • Nice.

    @philtoa334@philtoa3342 жыл бұрын
  • I just found your channel this morning, and it's the first one that has taught me about images, so I thank you for that. I am trying to learn Python (at 75 years young!), and having some problems with a blackjack program I'm trying to create. I corrected all the problems the program told me about except for the escape sequences in line 13. Also, how do I have it print out other cards but the one that I explicitly have in that line (7 of spades)? Thank you very much for your time.

    @allenbennett8735@allenbennett8735 Жыл бұрын
    • I forgot to paste my code. import random # from tkinter import * from PIL import Image suit_color = "" global our_card_image suit = 0 number_of_decks = input("Number of decks? ") deck = list(range(1, 53 * int(number_of_decks)+1)) random.seed(0) random.shuffle(deck) deck = list(range(1, 53 * int(number_of_decks)+1)) for i in range(1, 53 * int(number_of_decks)): our_card_image = Image.open("C:/Users/allen\OneDrive\Cards/7_of_spades.png") for i in range(1, 53 * int(number_of_decks)): match deck[i] % 13: case 1: value = "Ace" case 11: value = "Jack" case 12: value = "Queen" case 0: value = "King" case _: value = (deck[i] % 13) match ((deck[i] / 4)-(deck[i] // 4)) * 4: case 0: suit = "Clubs" case 1: suit = "Diamonds" case 2: suit = "Hearts" case 3: suit = "Spades" card = (str(value) + " of " + suit) match suit: case "Clubs" | "Spades": suit_color = "\033[1;30m" case "Diamonds" | "Hearts": suit_color = "\033[1;31m" # my_label = label(our_card_image) our_card_image.show() print(suit_color, card)

      @allenbennett8735@allenbennett8735 Жыл бұрын
    • more power to you! i hope i'll be able to keep my brain turning at that age too.

      @emperor8716@emperor871611 ай бұрын
    • Have you tried asking OpenAI? It helped me this morning with some Python code.

      @nicomal@nicomal10 ай бұрын
  • Hello friend, can you pls make a tutorial of using "Perling Noise" in creating a Minecraft on Python project)

    @maksoned0@maksoned0 Жыл бұрын
  • 13:45 I just used normal string 'red' it worked for me.

    @thepresistence5935@thepresistence5935 Жыл бұрын
  • Can I work with jupyter notebook for pillow?

    @karthickkuduva9819@karthickkuduva9819 Жыл бұрын
  • Hello sir, can u make a video in godot platformer

    @yuvraj4762@yuvraj4762 Жыл бұрын
  • Please make video on creating snake game on js with animation like Google snake game

    @anshulbindua9230@anshulbindua9230 Жыл бұрын
  • روح يا ابني ربنا يبركلك {F}

    @dabody123456@dabody1234562 жыл бұрын
  • Hey, what happened to pytube tutorial video?

    @kurakburak4668@kurakburak4668 Жыл бұрын
    • I knew I wasn’t tripping when i went to my history and didn’t find it.

      @joshkanyinda5569@joshkanyinda5569 Жыл бұрын
    • the pysimplegui video was also deleted :(

      @ezequielsm@ezequielsm Жыл бұрын
  • Hello sir can you please make video on pygame.midi

    @code_hero125@code_hero125 Жыл бұрын
  • hey! can you tell me what programming software and what theme are you using?

    @Dowdoo@Dowdoo Жыл бұрын
    • i think he is using sublime text. Dark theme i think

      @amber82872@amber82872 Жыл бұрын
  • AttributeError: module 'PIL.Image' has no attribute 'Palette' I think i have a different version, but where to find Palette in my version?

    @N0OBB@N0OBB2 жыл бұрын
    • Hey, can you paste the whole line here?

      @ClearCode@ClearCode2 жыл бұрын
  • Would you be able to tell me if Pillow can output an image in plain bytes? Like this 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xbf, 0xff, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xe3, 0xe3, 0xe3, 0xf3, 0xef, 0xc7, 0xc7, 0xe7, 0x87, 0x97, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x8f, 0x0f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,

    @gloriouz89@gloriouz89 Жыл бұрын
  • Hey! thx for this video, really need it) also, can you tell us please, how to run python code in Sublime Text?? Would really appreciate it

    @hawkise@hawkise2 жыл бұрын
    • Press control + b

      @ClearCode@ClearCode2 жыл бұрын
    • @@ClearCode I tried it, but it's not for python 3.9 and input function, but thank you anyway)

      @hawkise@hawkise2 жыл бұрын
    • @@ClearCode The problem is that sublime does not take user input using the input() function in python. And not only python, it seems Sublime has an issue taking input across all languages, what can be done about this? Any eclipse/ vs-code like ide for Python? I have heard of PyCharm except it is paid. If you can make a video setting up a develipment environment in sublime, it would be nice.

      @pranavnyavanandi9710@pranavnyavanandi97102 жыл бұрын
    • @@pranavnyavanandi9710 pycharm is not paid unless you do the paid version

      @limeedhot@limeedhot2 жыл бұрын
    • @@pranavnyavanandi9710 also if you really want to you can use vs-code with input() just go into the terminal, type the local path to the python file. like if your file layout is: games (folder): a_game.py you would type: python games/a_game.py because we go into games folder, then run a_game.py

      @limeedhot@limeedhot2 жыл бұрын
  • Sir, can you make part 3 of minecraft from python please please please

    @epicgamerz509@epicgamerz509 Жыл бұрын
  • please make a full course on openCv python

    @rajaryan7167@rajaryan7167 Жыл бұрын
    • Image Editor using Python & Pillow: Crop, rotate, resize, blur & More kzhead.info/sun/ecmAg9uBmoOao5E/bejne.html

      @codingbuddy0415@codingbuddy0415 Жыл бұрын
  • Hi, I watched your video about the pygame snake and I have one question: How can you implement the speed of the snake so that the speed increases when the snake grows?

    @MR-er7zp@MR-er7zp Жыл бұрын
    • as the snake's size only increases when it comes to the apple, you can measure the apple, for example: if snake.colliderect(apple): speed += 0.2 the problem is that if you use this variable speed to move the snake if RIGHT: x_snake += speed over time this will cause a small position bug that i'm still trying to solve. Or an example would be to use a clock.tick(speed) and use the speed as the FPS translated with Google

      @GabrielOliveira-nj9qg@GabrielOliveira-nj9qg Жыл бұрын
  • In the image.transpose part i get an error saying: '' AttributeError: module 'PIL.Image' has no attribute 'Transpose' '' Tried to find a solution online but couldn't for anything that worked

    @imfito3713@imfito37132 жыл бұрын
    • Can you show the full line here?

      @ClearCode@ClearCode2 жыл бұрын
    • @@ClearCode with Image.open("picture.jpg") as im: im_flipped = im.transpose(method=Image.Transpose.FLIP_LEFT_RIGHT)

      @imfito3713@imfito37132 жыл бұрын
    • ​@@imfito3713 from PIL import Image with Image.open("snorlax.jpg") as im: im_flipped = im.transpose(method=Image.FLIP_LEFT_RIGHT) im.show() It did work but I got a DeprecationWarning. DeprecationWarning: FLIP_LEFT_RIGHT is deprecated and will be removed in Pillow 10 (2023-07-01). Use Transpose.FLIP_LEFT_RIGHT instead. The new method is the way shown in the video. For some reason Pycharm is showing that Image.Transpose doesn't exist by highlighting it in yellow but it executes with no errors.

      @yourdad8228@yourdad82282 жыл бұрын
    • I've got the same error, but it worked using this line. image_flip_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT). Removing the Transpose in Image.Transpose.FLIP_LEFT_RIGHT have fixed it.

      @anjohnnako3309@anjohnnako3309 Жыл бұрын
  • It read an error

    @sharonosaze@sharonosaze4 ай бұрын
  • 1st viewers

    @avih5366@avih53662 жыл бұрын
  • imageChops no longer in Pillow build

    @WisdomShortvids@WisdomShortvids Жыл бұрын
    • it is

      @CoderrX@CoderrX Жыл бұрын
  • 51:57

    @patjaproduction1119@patjaproduction1119 Жыл бұрын
  • Error

    @sharonosaze@sharonosaze4 ай бұрын
  • You sound bored

    @giannhsp222@giannhsp222 Жыл бұрын
  • import sqlite3 import time class Song(): def __init__(self, name, singer, album, production_company, song_duration): self.name = name self.singer = singer self.album = album self.production_company = production_company self.song_duration = song_duration def __str__(self): return f"Name: {self.name} " \ f"Singer: {self.singer} " \ f"Album: {self.album} " \ f"Production Company {self.production_company} " \ f"Song Duration: {self.song_duration} " class Library(): def __init__(self): self.connection() def connection(self): self.con = sqlite3.connect("song_library.db") self.cursor = self.con.cursor() self.cursor.execute("Create Table if not exists songs (name TEXT, singer TEXT, album TEXT" "production_company TEXT, song_duration INT)") self.con.commit() def add_song(self, song_name): self.cursor.execute("Insert into songs Values (?, ?, ?, ?, ?)", (song_name.name, song_name.singer, song_name.album, song_name.production_company, song_name.song_duration)) self.con.commit() def show_song(self, song_name): self.cursor.execute("select * from songs where name = ?", (song_name,)) song = self.cursor.fetchall() if len(song) == 0: print("There is no such book...") else: song = Song(song[0][0], song[0][1], song[0][2], song[0][3], song[0][4]) print(song) def show_songs(self): self.cursor.execute("select * from songs") songs = self.cursor.fetchall() for i in songs: print(i) while True: print("""*********************** welcome to song program transactions; 1. Add Song 2. Show Song 3. Show Songs ***********************""") transaction = input("Please Chose One Transaction...") if transaction == "1": name = input("Name:") singer = input("Singer:") album = input("Album:") production_company = input("Production Company:") song_duration = input("Song Duratinon:") new_song = Song(name, singer, album, production_company, song_duration) print("Adding Song...") time.sleep(1) Library.add_song(new_song) print("Transaction Finished...") if transaction == "2": song = input("Song:") Library.add_song(song) if transaction == "3": Library.show_songs() else: continue what is wron in that

    @user-cs5ke6fk4f@user-cs5ke6fk4f2 жыл бұрын
    • What error did it give? Post that here. I'll try to look at it.

      @pranavnyavanandi9710@pranavnyavanandi97102 жыл бұрын
  • img.convert('L') # meh.. ImageEnhance.Contrast(img).enhance(1.25).convert('L') # nice!

    @michalbotor@michalbotor Жыл бұрын
  • Thank you!

    @ArjunMehrotra@ArjunMehrotra2 жыл бұрын
KZhead