PIL é a biblioteca de imagens Python que fornece ao interpretador python recursos de edição de imagens. Foi desenvolvido por Fredrik Lundh e vários outros colaboradores. Pillow é um fork PIL amigável e uma biblioteca fácil de usar desenvolvida por Alex Clark e outros colaboradores. Estaremos trabalhando com Pillow.
mvc com java
Instalação:
- Linux: No terminal Linux digite o seguinte:
pip install PillowInstalando o pip via terminal:sudo apt-get update
sudo apt-get install python-pip - Windows: Download o pacote Pillow apropriado de acordo com sua versão python. Certifique-se de fazer o download de acordo com a versão do python que você possui.
Estaremos trabalhando com o Módulo Imagem aqui, que fornece uma classe de mesmo nome e fornece várias funções para trabalhar em nossas imagens. Para importar o módulo Imagem, nosso código deve começar com a seguinte linha:
from PIL import ImageOperações com imagens:
- Abra uma imagem específica de um caminho: 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.
- Recuperar tamanho da imagem : As instâncias da classe Image que são criadas possuem muitos atributos, um de seus atributos úteis é o tamanho. Python
Alguns outros atributos são: Image.width Image.height Image.format Image.info etc.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
- Salvar alterações na imagem: Para salvar quaisquer alterações feitas no arquivo de imagem, precisamos fornecer o caminho e também o formato da imagem. Python
img.save(path format) # format is optional if no format is specified #it is determined from the filename extension
- Girando uma imagem: A rotação da imagem precisa do ângulo como parâmetro para girar a imagem. 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()
Nota: Há um sinalizador de expansão opcional disponível como um dos argumentos do método de rotação que, se definido como verdadeiro, expande a imagem de saída para torná-la grande o suficiente para conter a imagem totalmente girada. Como visto no trecho de código acima, usei um caminho relativo onde minha imagem está localizada no mesmo diretório que meu arquivo de código python, um caminho absoluto também pode ser usado.
- Cortando uma imagem: Image.crop(box) pega uma coordenada de pixel de 4 tuplas (esquerda superior direita inferior) e retorna uma região retangular da imagem usada. 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()
- Redimensionando uma imagem: Image.resize(size) - Aqui o tamanho é fornecido como largura e altura de 2 tuplas. 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()
- Colando uma imagem em outra imagem: O segundo argumento pode ser uma tupla de 2 (especificando o canto superior esquerdo) ou uma tupla de 4 (esquerda superior direita inferior) - neste caso o tamanho da imagem colada deve corresponder ao tamanho desta região da caixa ou Nenhum que é equivalente a (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.
- Obtendo um histograma de uma imagem: Isso retornará um histograma da imagem como uma lista de contagens de pixels, uma para cada pixel da imagem. (Um histograma de uma imagem é uma representação gráfica da distribuição tonal em uma imagem digital. Ele contém todos os valores de brilho contidos em uma imagem. Ele traça o número de pixels para cada valor de brilho. Ajuda a fazer as configurações de exposição.) da imagem de importação PIL. 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()
- Transpondo uma imagem: Este recurso nos dá a imagem espelhada de uma imagem 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()
- Divida uma imagem em bandas individuais: A divisão de uma imagem no modo RGB cria três novas imagens, cada uma contendo uma cópia das bandas individuais originais. 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: Convertendo uma imagem em um bitmap X11 (um formato de imagem binária de texto simples). Ele retorna uma string contendo um bitmap X11 que só pode ser usado para imagens de modo 1, ou seja, imagens em preto e branco de 1 bit pixel. da imagem de importação 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()
- Criando uma miniatura: Este método cria uma miniatura da imagem que é aberta. Ele não retorna um novo objeto de imagem, ele faz modificações no próprio objeto de imagem atualmente aberto. Se você não deseja alterar o objeto da imagem original, crie uma cópia e aplique este método. Este método também avalia o adequado para manter a proporção da imagem de acordo com o tamanho passado. da imagem de importação 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()