Maison >développement back-end >Tutoriel Python >Méthodes Python 2 pour implémenter des couches de cadres rectangulaires superposées

Méthodes Python 2 pour implémenter des couches de cadres rectangulaires superposées

Guanhui
Guanhuiavant
2020-06-18 17:44:322461parcourir

Méthodes Python 2 pour implémenter des couches de cadres rectangulaires superposées

Deux méthodes et effets :

Méthode 1, utilisez la méthode PIL.Image.blend :

from PIL import Image, ImageDraw
im = Image.open('d:/tmp/58.249.0.220_01_20200604141800866_TIMING.jpg', 'r')
im2 = Image.open('d:/tmp/58.249.0.220_01_20200604141800866_TIMING.jpg', 'r')
draw = ImageDraw.Draw(im2)
draw.rectangle([(1000, 500), (1200, 800)], fill=(255, 0, 0), width=2)
out = Image.blend(im, im2, 0.5)
out.save('d:/tmp/demo1.jpg')
im.close()
im2.close()
out.show()
out.close()

Méthode 2 : Superposition directe de pixels :

from PIL import Image, ImageDraw

im = Image.open('d:/tmp/58.249.0.220_01_20200604141800866_TIMING.jpg', 'r')
b = (255, 0, 0)
opacity = 0.5

for x in range(1000, 1200):
  for y in range(500, 800):
    p = im.getpixel((x, y))
    p = [int(p[i]*(1-opacity) + b[i]*opacity) for i in range(3)]
    im.putpixel((x, y), tuple(p))

im.save('d:/tmp/demo2.jpg')
im.show()
im.close()

Les deux rendus sont les suivants :

Explication : La première méthode permet de dessiner un rectangle Certains bien -des formes définies telles que des ellipses, mais la seconde a une meilleure capacité à contrôler la forme indépendamment Tant que la formule de données correspondante est modifiée dans le programme, vous pouvez dessiner les contours souhaités

Chapitre Les deux méthodes ; sont définis par la première méthode (

out = image1 * (1.0 - alpha) + image2 * alpha)

Pensez ensuite à la mire de test de daltonisme et à une autre image (je ne sais pas quel est son nom, mais différentes personnes sur une image peuvent voir des choses différentes.) C'est moi qui l'ai inventé.

Tutoriel recommandé : "Tutoriel Python"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Détails du décorateur PythonArticle suivant:Détails du décorateur Python