在图片上显示汉字python代码
时间: 2024-12-04 18:24:45 浏览: 83
在Python中,可以使用Pillow库(PIL的升级版)来在图片上显示汉字。以下是一个简单的示例代码:
```python
from PIL import Image, ImageDraw, ImageFont
# 打开一张图片
image = Image.open('example.jpg')
# 初始化ImageDraw对象
draw = ImageDraw.Draw(image)
# 设置字体和大小
font = ImageFont.truetype('simsun.ttc', 40) # 使用宋体,大小为40
# 在图片上添加文字
draw.text((10, 10), '你好,世界!', font=font, fill=(255, 255, 255))
# 保存或显示图片
image.save('output.jpg')
image.show()
```
这段代码首先加载一张名为`example.jpg`的图片,然后创建一个`ImageDraw`对象用于绘制。接着,它设置了一个字体(这里使用的是宋体,文件名为`simsun.ttc`,需要确保这个字体文件在你的系统中是可用的),并指定了字体的大小。之后,使用`draw.text()`方法在图片上的指定位置(这里是坐标(10, 10))添加了文本“你好,世界!”,字体颜色设置为白色。最后,代码将修改后的图片保存为`output.jpg`并显示出来。
相关问题
opencv在图片右上角上显示汉字python代码
在OpenCV中,可以使用`cv2.putText()`函数在图片上显示汉字。首先需要确保你的Python环境支持中文字符,并且安装了相应的字体文件。以下是一个简单的示例代码,展示如何在图片的右上角显示汉字:
```python
import cv2
import numpy as np
# 读取图片
image = cv2.imread('path_to_your_image.jpg')
# 设置字体
font = cv2.FONT_HERSHEY_SIMPLEX
# 设置文字内容、位置、字体、大小、颜色等参数
text = "你好,世界"
position = (10, 30) # 文字左上角的位置
font_scale = 1
color = (255, 0, 0) # BGR格式,这里是红色
thickness = 2
line_type = cv2.LINE_AA
# 在图片上添加文字
cv2.putText(image, text, position, font, font_scale, color, thickness, line_type)
# 显示图片
cv2.imshow('Image with Chinese Text', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先加载了一张图片,然后设置了要显示的文字内容、位置、字体、大小、颜色和线条类型。使用`cv2.putText()`函数将文字绘制到图片上。最后,使用`cv2.imshow()`显示带有文字的图片。
请确保替换 `'path_to_your_image.jpg'` 为你的图片路径。此外,你可能需要根据你的需求调整文字的位置、大小和颜色等参数。
python画图正常显示中文代码
### Python Matplotlib 中文显示正常字体设置示例代码
在使用 Matplotlib 绘制图形时,中文显示问题通常与字体设置和系统环境相关。以下是解决中文乱码问题的完整解决方案及示例代码。
#### 方法一:使用 `FontProperties` 设置中文字体
通过 `matplotlib.font_manager.FontProperties` 指定中文字体,可以有效解决中文乱码问题[^1]。
```python
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置中文字体
font = FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc", size=14) # 宋体
# 绘制图形
plt.figure(figsize=(8, 6))
plt.plot([1, 2, 3], [4, 5, 6], label="示例曲线")
plt.title("Matplotlib 中文标题", fontproperties=font)
plt.xlabel("X轴标签", fontproperties=font)
plt.ylabel("Y轴标签", fontproperties=font)
plt.legend(prop=font)
# 显示图形
plt.show()
```
#### 方法二:全局设置 Matplotlib 字体参数
通过修改 Matplotlib 的全局参数 `rcParams`,可以实现所有图形中中文的正常显示[^2]。
```python
import matplotlib.pyplot as plt
import matplotlib
# 全局设置字体为 SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题
# 绘制图形
plt.figure(figsize=(8, 6))
plt.plot([1, 2, 3], [4, 5, 6], label="示例曲线")
plt.title("Matplotlib 中文标题")
plt.xlabel("X轴标签")
plt.ylabel("Y轴标签")
plt.legend()
# 显示图形
plt.show()
```
#### 方法三:动态获取系统字体列表并选择合适的字体
如果不确定系统中安装了哪些字体,可以通过以下代码动态获取系统字体列表[^3]。
```python
from matplotlib import pyplot as plt
import matplotlib
# 获取系统字体列表
fonts = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for font in fonts:
print(font)
```
运行上述代码后,根据输出结果选择一个支持中文的字体(如 SimHei 或 SimSun),然后将其应用于方法一或方法二中。
#### 方法四:保存图片时确保背景透明及中文正常显示
如果需要将绘制的图形保存为文件,并确保背景透明且中文正常显示,可以结合 `savefig` 方法[^4]。
```python
import matplotlib.pyplot as plt
import matplotlib
# 全局设置字体为 SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
# 绘制图形
plt.figure(figsize=(8, 6))
plt.plot([1, 2, 3], [4, 5, 6], label="示例曲线")
plt.title("Matplotlib 中文标题")
plt.xlabel("X轴标签")
plt.ylabel("Y轴标签")
plt.legend()
# 保存图片,背景透明
plt.savefig('output.png', format='png', bbox_inches='tight', transparent=True, dpi=600)
# 显示图形
plt.show()
```
### 注意事项
- 确保系统已安装支持中文的字体(如 SimHei、SimSun)。
- 如果使用的是 Linux 或 macOS 系统,可能需要手动安装中文字体并指定正确的路径。
- 在某些情况下,`matplotlib.rcParams['axes.unicode_minus'] = False` 是必需的,以避免负号显示为方块。
阅读全文
相关推荐
















