python 小图片旋转任意角度去除黑底后粘贴到大图片中
时间: 2024-05-16 22:17:00 浏览: 142
你可以使用PIL库来处理图片。以下是一个简单的示例代码,可以将小图片旋转任意角度并粘贴到大图片中:
```python
from PIL import Image
import math
# 打开小图片
img_small = Image.open('small_image.png')
# 旋转小图片
angle = 45 # 旋转角度
img_small_rotated = img_small.rotate(angle, expand=True)
# 去掉黑底
img_small_rotated = img_small_rotated.convert('RGBA')
datas = img_small_rotated.getdata()
new_data = []
for item in datas:
if item[0] == 0 and item[1] == 0 and item[2] == 0:
new_data.append((255, 255, 255, 0))
else:
new_data.append(item)
img_small_rotated.putdata(new_data)
# 打开大图片
img_large = Image.open('large_image.png')
# 计算粘贴位置
x = 100 # x坐标
y = 100 # y坐标
w, h = img_small_rotated.size
angle_rad = math.radians(angle) # 将角度转换为弧度
cos_theta = math.cos(angle_rad)
sin_theta = math.sin(angle_rad)
x1 = int(x - w/2*cos_theta - h/2*sin_theta)
y1 = int(y - w/2*sin_theta + h/2*cos_theta)
# 粘贴小图片到大图片中
img_large.paste(img_small_rotated, (x1, y1), img_small_rotated)
# 保存图片
img_large.save('output_image.png')
```
这个代码首先打开小图片,然后对小图片进行旋转,并使用PIL库的`convert`方法将图片转换为RGBA格式。接着,将图片中黑色像素的alpha通道值设置为0,实现去掉黑底的效果。然后打开大图片,计算小图片在大图片中的粘贴位置,并使用PIL库的`paste`方法将小图片粘贴到大图片中。最后保存输出的图片。
阅读全文