import turtle
import time
import os
import cv2
from PIL import Image
class turtle_img_mp4(object):
img_esp = "E:\\test\image\one\eps"
img_png = "E:\\test\image\one\png"
mp4_path = "E:\\test\image\one\mp4"
# 图片格式转换eps转为png
def im_eps_to_png(self, file_dir):
file_list = os.listdir(file_dir)
for file_item in file_list:
file_name, _ = os.path.splitext(file_item)
im = Image.open('{}\\{}'.format(file_dir, file_item))
im.convert("RGBA")
im.thumbnail((2000, 2000), Image.ANTIALIAS)
im.save('{}\\{}.png'.format(self.img_png, file_name), quality=90)
# 图片生成视频
def im_to_mp4(self, png_file_dir):
image_names = self.confirm_img(png_file_dir)
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
fps = 7
image = Image.open('{}\\{}'.format(png_file_dir, image_names[0]))
media_writer = cv2.VideoWriter("{}\\one.mp4".format(self.mp4_path), fourcc, fps, image.size)
for image_name in image_names:
im = cv2.imread('{}\\{}'.format(png_file_dir, image_name))
media_writer.write(im)
media_writer.release()
# 图片排序
def confirm_img(self, png_file_dir):
image_names = os.listdir(png_file_dir)
blue_list, black_list, red_list, yellow_list, green_list = [], [], [], [], []
for item in image_names:
if 'blue' in item:
blue_list.append(item)
if 'black' in item:
black_list.append(item)
if 'red' in item:
red_list.append(item)
if 'yellow' in item:
yellow_list.append(item)
if 'green' in item:
green_list.append(item)
return ['end.png'] + blue_list + black_list + red_list + yellow_list + green_list + ['end.png']
# 画圆并生成eps图片
def img_circle(self, color):
turtle.pensize(5)
turtle.pencolor(color)
for i in range(180):
if i % 10 == 0 or i == 179:
cur_time = int(time.time())+i
file_name = '{}\\{}{}.eps'.format(self.img_esp, color, cur_time)
turtle.getcanvas().postscript(file=file_name)
turtle.right(2)
turtle.forward(1.5)
if color == 'green':
turtle.up()
turtle.goto(-45, 100)
turtle.write('THANKS', font=('arial', 16, 'normal'))
file_name = '{}\\end.eps'.format(self.img_esp)
turtle.getcanvas().postscript(file=file_name)
# 画图
def canvas_image(self):
win = turtle.Screen()
win.title("奥运五环")
win.setup(width=600, height=450)
turtle.up()
turtle.goto(-100, 40)
turtle.down()
self.img_circle("blue")
turtle.up()
turtle.goto(-10, 40)
turtle.down()
self.img_circle("black")
turtle.up()
turtle.goto(80, 40)
turtle.down()
self.img_circle("red")
turtle.up()
turtle.goto(-55, 0)
turtle.down()
self.img_circle("yellow")
turtle.up()
turtle.goto(35, 0)
turtle.down()
self.img_circle("green")
window = turtle.Screen()
window.exitonclick()
def run(self):
self.canvas_image()
self.im_eps_to_png(self.img_esp)
self.im_to_mp4(self.img_png)
turtle应用系列一
于 2023-05-09 10:12:24 首次发布