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.LANCZOS)
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)
forward_list, left_list, right_list, backward_list = [], [], [], []
for item in image_names:
if 'forward' in item:
forward_list.append(item)
if 'left' in item:
left_list.append(item)
if 'right' in item:
right_list.append(item)
if 'backward' in item:
backward_list.append(item)
return ['end.png'] + forward_list + left_list + right_list + backward_list + ['end.png']
# 生成eps图片
def img_circle(self, direction):
if direction in ["left", "right"]:
for i in range(200):
if i % 10 == 0 or i == 199:
cur_time = int(time.time()) + i
file_name = '{}\\{}{}.eps'.format(self.img_esp, direction, cur_time)
turtle.getcanvas().postscript(file=file_name)
turtle.right(1)
turtle.forward(2)
if direction in ["forward", "backward"]:
for i in range(112):
turtle.forward(2)
if i % 10 == 0:
cur_time = int(time.time()) + i
file_name = '{}\\{}{}.eps'.format(self.img_esp, direction, cur_time)
turtle.getcanvas().postscript(file=file_name)
if direction == 'backward':
turtle.up()
turtle.goto(0, 0)
turtle.down()
turtle.write("love", font=("gungsuh", 35), align="center")
file_name = '{}\\end.eps'.format(self.img_esp)
turtle.getcanvas().postscript(file=file_name)
# 画图
def canvas_image(self):
win = turtle.Screen()
win.title("love")
turtle.setup(width=800, height=500)
turtle.color("red")
turtle.pensize(5)
turtle.speed(10)
turtle.up()
turtle.goto(0, -180)
turtle.down()
turtle.speed(1)
turtle.fillcolor("pink")
turtle.begin_fill()
turtle.left(140)
self.img_circle('forward')
self.img_circle("left")
turtle.left(120)
self.img_circle("right")
self.img_circle("backward")
turtle.end_fill()
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应用系列二
最新推荐文章于 2024-08-09 08:23:12 发布