logo

Работа с изображения в 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 модула, нашият код трябва да започне със следния ред:



как да отворите скрити приложения на android
 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' src='//techcodeview.com/img/python/71/working-with-images-in-python.webp' title=Забележка: Има незадължителен флаг за разширяване, наличен като един от аргументите на метода за завъртане, който, ако е зададен 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-1.webp' title=
  • Преоразмеряване на изображение: 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-2.webp' title=
  • Поставяне на изображение върху друго изображение: Вторият аргумент може да бъде 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-3.webp' title=
  • Получаване на хистограма на изображение: Това ще върне хистограма на изображението, тъй като списък от пиксели брои по един за всеки пиксел в изображението. (Хистограмата на изображение е графично представяне на тоналното разпределение в цифрово изображение. Тя съдържа какви са всички стойности на яркост, съдържащи се в изображението. Тя начертава броя пиксели за всяка стойност на яркост. Помага при извършване на настройките на експозицията.) от 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-4.webp' title=


  • Транспониране на изображение: Тази функция ни дава огледален образ на изображение 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-5.webp' title=
  • Разделете изображение на отделни ленти: Разделянето на изображение в режим 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-6.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-7.webp' title= конвертиране на изображение в bitmao в python' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-8.webp' title=
  • Създаване на миниатюра: Този метод създава миниатюра на изображението, което се отваря. Той не връща нов обект на изображение, а прави модификация на място в самия текущо отворен обект на изображение. Ако не искате да промените оригиналния обект на изображение, създайте копие и след това приложете този метод. Този метод също така оценява подходящото за поддържане на пропорциите на изображението според предадения размер. от 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-9.webp' title=
Създаване на тест