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
Някои други атрибути са: Image.width Image.height Image.format Image.info и др.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
- Запазете промените в изображението: За да запазим промените, които сте направили във файла с изображение, трябва да дадем път, както и формат на изображението. 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()
Забележка: Има незадължителен флаг за разширяване, наличен като един от аргументите на метода за завъртане, който, ако е зададен 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()
- Преоразмеряване на изображение: 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()
- Поставяне на изображение върху друго изображение: Вторият аргумент може да бъде 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.
- Получаване на хистограма на изображение: Това ще върне хистограма на изображението, тъй като списък от пиксели брои по един за всеки пиксел в изображението. (Хистограмата на изображение е графично представяне на тоналното разпределение в цифрово изображение. Тя съдържа какви са всички стойности на яркост, съдържащи се в изображението. Тя начертава броя пиксели за всяка стойност на яркост. Помага при извършване на настройките на експозицията.) от 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
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()
- Разделете изображение на отделни ленти: Разделянето на изображение в режим 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()
- 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()
- Създаване на миниатюра: Този метод създава миниатюра на изображението, което се отваря. Той не връща нов обект на изображение, а прави модификация на място в самия текущо отворен обект на изображение. Ако не искате да промените оригиналния обект на изображение, създайте копие и след това приложете този метод. Този метод също така оценява подходящото за поддържане на пропорциите на изображението според предадения размер. от 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()