Participo en el "Concurso creativo de principios de verano" para obtener más información, consulte: Concurso creativo de principios de verano
Hola a todos, soy gris y presenté un artículo sobre cómo usar su nombre para dibujar sus bellas imágenes, que se implementa principalmente en Java. Hoy, usemos Python para implementarlo.
Además, el tamaño del código final no excederá las treinta líneas.
Enlace a la publicación de blog anterior: Programador's Romance: Treinta líneas de código para hacer una imagen en su nombre - Edición Java
1. Relacionado con el medio ambiente
Aquí elegimos python como nuestra principal arma de dibujo. En cuanto a la instalación del entorno python, no lo presentaremos aquí. Los socios interesados pueden explorar por sí mismos.
En el mundo de Python, PIL es una herramienta poderosa para manipular imágenes. Creo que todos lo conocen. A continuación, lo usaremos para lograr nuestros objetivos.
Instalar dependencias
pip install Pillow
复制代码
2. Puntos básicos de conocimiento
Antes del inicio oficial, para aquellos que no están familiarizados con el funcionamiento de PIL, presentaré brevemente su uso básico y, por supuesto, también destacaré varios métodos que usaremos.
2.1 Cargando imágenes
from PIL import Image
img = Image.open("图片地址")
复制代码
Sí, es así de simple, solo Image.open()
úsalo para leer la imagen.
2.2 Obtención de información básica de imágenes
Después de obtener la imagen, generalmente hay varios parámetros a los que se debe prestar atención, como ancho y alto, canal
width, height = img.size
# RGBA 表示包含透明度,如png
# RGB 不包含透明度,如jpg
mode = img.mode
复制代码
2.3 Crear mesas de trabajo para editar
Si queremos dibujar información en esta imagen, o queremos crear una mesa de trabajo vacía, primero debemos obtener un objeto ImageDraw
from PIL import ImageDraw
# 获取图片对应的画板
draw = ImageDraw.Draw(img)
复制代码
Después de obtener el objeto de dibujo anterior, podemos dibujar varias figuras geométricas, texto, imágenes, etc. de acuerdo con los diversos métodos que proporciona; si queremos obtener un tablero de dibujo vacío, ¿qué podemos hacer?
# 创建一个待透明度的图,第二个元组参数为图的宽高,第三个表示背景全透明
new_img = Image.new("RGBA", (width, height), (255, 255, 255, 0))
复制代码
ImageDraw proporciona muchos métodos de dibujo. Los siguientes son algunos casos de uso común, que no se describirán en detalle.
new_img = Image.new("RGBA", (480, 640), (255, 255, 255, 0))
# 创建绘制对象
draw = ImageDraw.Draw(new_img)
# 从 (10, 10) -> (100, 100) 画一条黄色直线
draw.line((10, 10, 100, 100), 'red')
# 绘制矩形 (100, 110) -> (200, 200),黑色填充,黄色填充
draw.rectangle((100, 110, 200, 200), 'black', 'red')
# 绘制椭圆
draw.ellipse((300, 300, 500, 400), 'yellowgreen', 'red')
# 园
draw.ellipse((250, 250, 350, 350), 'seagreen', 'red')
# 绘制文本,选择宋体,字体大小为28,uniquecode编码
font = ImageFont.truetype("simsun.ttc", 28, encoding="unic")
draw.text((300, 200), u'一灰灰Blog', 'red', font)
复制代码
Concéntrese en dibujar el texto aquí, draw.text((x,y), "文字", "文字颜色", 字体)
este es el método a usar a continuación
2.4 Obtener píxeles
Si queremos obtener el valor RGB de la coordenada especificada, podemos hacer lo siguiente
pixel = img.getpixel((x, y))
复制代码
Al ver a la amiguita aquí, combinada con la publicación anterior del blog, si quieres realizar la versión de Python del dibujo con su nombre, creo que es muy simple.
2.5 Previsualizar y guardar imágenes
# 展示图片
new_img.show()
# 保存图片
new_img.save("save.png")
复制代码
3. Versión Python del dibujo de texto
A continuación, ingrese la implementación formal
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def render(path: str, name: str, save: str):
img = Image.open(path)
width, height = img.size
# 创建画板,放大24倍
new_img = Image.new("RGBA", (width * 24, height * 24), (255, 255, 255, 0))
draw = ImageDraw.Draw(new_img)
# 加载自定义字体,字体文件来自 https://www.diyiziti.com/Builder/446
font = ImageFont.truetype(u"D://MobileFile/潇洒手写体.ttf", 20, encoding="unic") # 设置字体
render_index = 0
for x in range(width):
for y in range(height):
pixel = img.getpixel((x, y))
draw.text((x * 24 + 2, y * 24 + 2), name[render_index], pixel, font) # 再指定的地方使用文字替代之前的纯色
render_index = (render_index + 1) % len(name)
new_img.save(save)
复制代码
Aun tomando como ejemplo a las personitas amarillas, veamos como es el efecto generado
A juzgar por la imagen de arriba, el resultado de la versión anterior de Java es similar al de la versión anterior de Java. Si está interesado, comencemos;
un contacto gris
Es mejor no tener libros que no tener libros. El contenido anterior es puramente de una familia. Debido a la capacidad personal limitada, hay omisiones y errores inevitables. Si encuentra errores o tiene mejores sugerencias, puede criticarlas y corregirlas. . Muchísimas gracias.
- Sitio personal: blog.hhui.top
- QQ: Un gris gris / 3302797840
- Cuenta pública de WeChat: un blog gris