Работа с изображения в Python

Работа с изображения в Python

PIL е библиотеката за изображения на Python, която предоставя на интерпретатора на Python възможности за редактиране на изображения. Разработен е от Фредрик Лунд и няколко други сътрудници. Pillow е удобната PIL вилица и лесна за използване библиотека, разработена от Алекс Кларк и други сътрудници. Ще работим с Pillow.

Инсталация:

  • Linux: На терминала на linux въведете следното:
     pip install Pillow  Инсталиране на pip през терминал:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Windows: Изтегляне подходящия пакет възглавници според вашата версия на python. Уверете се, че изтегляте според версията на python, която имате.

Тук ще работим с Image Module, който предоставя клас със същото име и предоставя много функции за работа с нашите изображения. За да импортираме Image модула, нашият код трябва да започне със следния ред:

  from PIL import Image  

Операции с изображения:

  • Отворете конкретно изображение от път: Python
       #img = Image.open(path)    # On successful execution of this statement   # an object of Image type is returned and stored in img variable)   try  :   img   =   Image  .  open  (  path  )   except   IOError  :   pass   # Use the above statement within try block as it can    # raise an IOError if file cannot be found    # or image cannot be opened.   
  • Извличане на размера на изображението : Екземплярите на клас Image, които са създадени, имат много атрибути, един от неговите полезни атрибути е размерът. Python
       from   PIL   import   Image   filename   =   'image.webp'   with   Image  .  open  (  filename  )   as   image  :   width     height   =   image  .  size   #Image.size gives a 2-tuple and the width height can be obtained   
    Някои други атрибути са: Image.width Image.height Image.format Image.info и др.
  • Запазете промените в изображението: За да запазим промените, които сте направили във файла с изображение, трябва да дадем път, както и формат на изображението. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Завъртане на изображение: Завъртането на изображението се нуждае от ъгъл като параметър, за да се завърти изображението. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Angle given   img   =   img  .  rotate  (  180  )   #Saved in the same relative location   img  .  save  (  'rotated_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    завъртане на изображение в python Забележка: Има незадължителен флаг за разширяване, наличен като един от аргументите на метода за завъртане, който, ако е зададен true, разширява изходното изображение, за да го направи достатъчно голямо, за да побере цялото завъртяно изображение. Както се вижда в горния кодов фрагмент, използвах относителен път, където моето изображение се намира в същата директория като моя кодов файл на python, може да се използва и абсолютен път.
  • Изрязване на изображение: Image.crop(box) взема 4-кортежна пикселна координата (ляво горе надясно долу) и връща правоъгълна област от използваното изображение. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   area   =   (  0     0     width  /  2     height  /  2  )   img   =   img  .  crop  (  area  )   #Saved in the same relative location   img  .  save  (  'cropped_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    изрязване на изображение в python
  • Преоразмеряване на изображение: Image.resize(size) - Тук размерът е предоставен като ширина и височина от 2 кортежа. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   img   =   img  .  resize  ((  width  /  2     height  /  2  ))   #Saved in the same relative location   img  .  save  (  'resized_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    преоразмеряване на изображение в python
  • Поставяне на изображение върху друго изображение: Вторият аргумент може да бъде 2-кортеж (посочващ горния ляв ъгъл) или 4-кортеж (ляво горе вдясно долу) - в този случай размерът на поставеното изображение трябва да съвпада с размера на тази област на полето или Няма, което е еквивалентно на (0 0). Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   #Image on which we want to paste   img   =   Image  .  open  (  'picture.webp'  )   #Relative Path   #Image which we want to paste   img2   =   Image  .  open  (  'picture2.webp'  )   img  .  paste  (  img2     (  50     50  ))   #Saved in the same relative location   img  .  save  (  'pasted_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   ##An additional argument for an optional image mask image is also available.   
    поставяне на изображение върху друго в Python
  • Получаване на хистограма на изображение: Това ще върне хистограма на изображението, тъй като списък от пиксели брои по един за всеки пиксел в изображението. (Хистограмата на изображение е графично представяне на тоналното разпределение в цифрово изображение. Тя съдържа какви са всички стойности на яркост, съдържащи се в изображението. Тя начертава броя пиксели за всяка стойност на яркост. Помага при извършване на настройките на експозицията.) от PIL import Image Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Getting histogram of image   print   img  .  histogram  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    получаване на хистограма-на-изображение в копие на Python


  • Транспониране на изображение: Тази функция ни дава огледален образ на изображение Python
        from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #transposing image    transposed_img   =   img  .  transpose  (  Image  .  FLIP_LEFT_RIGHT  )   #Save transposed image   transposed_img  .  save  (  'transposed.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    транспониране на изображение в python
  • Разделете изображение на отделни ленти: Разделянето на изображение в режим RGB създава три нови изображения, всяко от които съдържа копие на оригиналните отделни ленти. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #splitting the image   print   img  .  split  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    разделяне на изображение в python
  • tobitmap: Преобразуване на изображение в X11 bitmap (формат на двоично изображение с обикновен текст). Връща низ, съдържащ растерно изображение X11, което може да се използва само за изображения в режим 1, т.е. черно-бели изображения с 1 бит пиксел. от PIL импортиране на изображение Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   print   img  .  mode   #converting image to bitmap   print   img  .  tobitmap  ()   print   type  (  img  .  tobitmap  ())   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    конвертиране на изображение в растерно изображение в python конвертиране на изображение в bitmao в python
  • Създаване на миниатюра: Този метод създава миниатюра на изображението, което се отваря. Той не връща нов обект на изображение, а прави модификация на място в самия текущо отворен обект на изображение. Ако не искате да промените оригиналния обект на изображение, създайте копие и след това приложете този метод. Този метод също така оценява подходящото за поддържане на пропорциите на изображението според предадения размер. от PIL импортиране на изображение Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #In-place modification   img  .  thumbnail  ((  200     200  ))   img  .  save  (  'thumb.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    създаване на миниатюра на изображение в python
Създаване на тест