everything works except for changes the location

pull/984/head
Jason 2 years ago
parent 3b5ab95720
commit 78ff605c42

@ -13,7 +13,7 @@ from utils.console import print_step, print_substep
from utils.voice import sanitize_text
from utils import settings
DEFAULT_MAX_LENGTH: int = 50 # video length variable
DEFAULT_MAX_LENGTH: int = 10 # video length variable
class TTSEngine:

@ -9,3 +9,5 @@ requests==2.28.1
rich==12.5.1
toml==0.10.2
translators==5.3.1
Pillow~=9.1.1

@ -2,26 +2,44 @@ from __future__ import annotations
from typing import Tuple
from moviepy.video.VideoClip import VideoClip, TextClip
from moviepy.video.io.VideoFileClip import VideoFileClip
from PIL import ImageFont, Image, ImageDraw, ImageEnhance
from moviepy.video.VideoClip import VideoClip, ImageClip
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
class Video:
def __init__(self, video: VideoClip | VideoFileClip, *args, **kwargs):
def __init__(self, video: VideoClip, *args, **kwargs):
self.video: VideoClip = video
self.fps = self.video.fps
self.duration = self.video.duration
@staticmethod
def _create_watermark(text, fontsize, opacity=0.5):
txt_clip = TextClip(text, fontsize=fontsize, color='black').set_opacity(opacity)
return txt_clip
path = "./assets/temp/png/watermark.png"
width = int(fontsize * len(text))
height = int(fontsize * len(text) / 2)
def add_watermark(self, text, opacity=0.5, position: Tuple = (0.95, 0.95), fontsize=15):
txt_clip = self._create_watermark(text, opacity=opacity, fontsize=fontsize)
txt_clip = txt_clip.set_pos(position).set_duration(10)
white = (255, 255, 255)
transparent = (0, 0, 0, 0)
# Overlay the text clip on the first video clip
self.video = CompositeVideoClip([self.video, txt_clip])
font = ImageFont.load_default()
wm = Image.new("RGBA", (width, height), transparent)
im = Image.new("RGBA", (width, height), transparent) # Change this line too.
draw = ImageDraw.Draw(wm)
w, h = draw.textsize(text, font)
draw.text(((width - w) / 2, (height - h) / 2), text, white, font)
en = ImageEnhance.Brightness(wm) # todo allow it to use the fontsize
mask = en.enhance(1 - opacity)
im.paste(wm, (25, 25), mask)
im.save(path)
return ImageClip(path)
def add_watermark(self, text, opacity=0.5, duration: int | float = 5, position: Tuple = (1, 100), fontsize=15):
img_clip = self._create_watermark(text, opacity=opacity, fontsize=fontsize)
img_clip = img_clip.set_opacity(opacity).set_duration(duration)
img_clip = img_clip.set_position(("center","bottom")) # set position doesn't work for some reason # todo fix
# Overlay the img clip on the first video clip
self.video = CompositeVideoClip([self.video, img_clip])
return self.video

Loading…
Cancel
Save