抖音主页截图生成器在线制作,抖音主页截图生成器,快手小红书抖音截图【python】

简介: 这个代码实现了一个完整的抖音主页截图生成器,包含以下功能:顶部导航栏模拟

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:8918

这个代码实现了一个完整的抖音主页截图生成器,包含以下功能:
顶部导航栏模拟
用户信息区域(头像、用户名、ID、关注按钮)
用户数据统计(作品数、粉丝数、关注数、获赞数)
作品网格展示区
底部导航栏
自动生成水印
要运行此代码,需要安装Pillow库:pip install pillow
同时需要准备一个中文字体文件(如simhei.ttf)放在同一目录下。

import os
import random
from datetime import datetime
from PIL import Image, ImageDraw, ImageFont

class DouyinProfileGenerator:
def init(self):
self.width = 1080
self.height = 1920
self.bg_color = (255, 255, 255)
self.primary_color = (0, 0, 0)
self.secondary_color = (100, 100, 100)
self.accent_color = (255, 0, 80)
self.font_path = "simhei.ttf"

def generate_profile(self, username, followers, following, likes, avatar_path=None):
    # 创建画布
    img = Image.new('RGB', (self.width, self.height), self.bg_color)
    draw = ImageDraw.Draw(img)

    # 绘制顶部导航栏
    self._draw_navbar(draw)

    # 绘制用户信息区域
    self._draw_user_info(draw, username, followers, following, likes, avatar_path)

    # 绘制作品展示区域
    self._draw_content_grid(draw)

    # 添加底部导航栏
    self._draw_bottom_nav(draw)

    # 添加水印
    self._add_watermark(draw)

    return img

def _draw_navbar(self, draw):
    # 绘制顶部导航栏
    draw.rectangle([(0, 0), (self.width, 120)], fill=(255, 255, 255))
    draw.line([(0, 120), (self.width, 120)], fill=(200, 200, 200), width=1)

    # 添加返回箭头
    draw.polygon([(30, 60), (60, 30), (60, 90)], fill=self.primary_color)

    # 添加标题
    font = ImageFont.truetype(self.font_path, 40)
    draw.text((self.width/2, 60), "抖音", fill=self.primary_color, font=font, anchor="mm")

    # 添加搜索图标
    draw.ellipse([(self.width-100, 30), (self.width-60, 70)], outline=self.primary_color, width=2)
    draw.line([(self.width-80, 70), (self.width-60, 90)], fill=self.primary_color, width=2)

def _draw_user_info(self, draw, username, followers, following, likes, avatar_path):
    # 绘制头像
    avatar_size = 120
    avatar_x = 60
    avatar_y = 180

    if avatar_path and os.path.exists(avatar_path):
        avatar = Image.open(avatar_path).resize((avatar_size, avatar_size))
        mask = Image.new('L', (avatar_size, avatar_size), 0)
        draw_mask = ImageDraw.Draw(mask)
        draw_mask.ellipse([(0, 0), (avatar_size, avatar_size)], fill=255)
        img.paste(avatar, (avatar_x, avatar_y), mask)
    else:
        draw.ellipse([(avatar_x, avatar_y), (avatar_x+avatar_size, avatar_y+avatar_size)], 
                    fill=(200, 200, 200))
        font = ImageFont.truetype(self.font_path, 60)
        draw.text((avatar_x+avatar_size/2, avatar_y+avatar_size/2), "T", 
                 fill=(100, 100, 100), font=font, anchor="mm")

    # 绘制用户名
    font = ImageFont.truetype(self.font_path, 40)
    draw.text((avatar_x+avatar_size+30, avatar_y+20), username, fill=self.primary_color, font=font)

    # 绘制用户ID
    font = ImageFont.truetype(self.font_path, 30)
    draw.text((avatar_x+avatar_size+30, avatar_y+70), f"抖音号: dy{random.randint(10000000, 99999999)}", 
             fill=self.secondary_color, font=font)

    # 绘制关注按钮
    follow_btn_x = self.width - 180
    follow_btn_y = avatar_y + 30
    draw.rounded_rectangle([(follow_btn_x, follow_btn_y), 
                          (follow_btn_x+120, follow_btn_y+60)], 
                         radius=30, fill=self.accent_color)
    font = ImageFont.truetype(self.font_path, 30)
    draw.text((follow_btn_x+60, follow_btn_y+30), "关注", fill=(255, 255, 255), 
             font=font, anchor="mm")

    # 绘制粉丝、关注、获赞数据
    stats_y = avatar_y + avatar_size + 40
    stats = [
        ("作品", random.randint(10, 500)),
        ("粉丝", followers),
        ("关注", following),
        ("获赞", likes)
    ]

    for i, (label, value) in enumerate(stats):
        x = 60 + i * (self.width - 120) / 4
        font = ImageFont.truetype(self.font_path, 35)
        draw.text((x, stats_y), str(value), fill=self.primary_color, font=font, anchor="mt")
        font = ImageFont.truetype(self.font_path, 25)
        draw.text((x, stats_y+40), label, fill=self.secondary_color, font=font, anchor="mt")

    # 绘制简介
    bio_y = stats_y + 100
    font = ImageFont.truetype(self.font_path, 30)
    bio = "这个人很懒,什么都没留下~" if random.random() < 0.5 else "感谢关注,持续更新中!"
    draw.text((60, bio_y), bio, fill=self.primary_color, font=font)

def _draw_content_grid(self, draw):
    # 绘制作品网格
    grid_start_y = 600
    grid_padding = 2
    item_size = (self.width - grid_padding * 2) // 3

    for row in range(4):
        for col in range(3):
            x = col * (item_size + grid_padding)
            y = grid_start_y + row * (item_size + grid_padding)

            # 随机生成封面颜色
            color = (random.randint(100, 200), random.randint(100, 200), random.randint(100, 200))
            draw.rectangle([(x, y), (x+item_size, y+item_size)], fill=color)

            # 添加播放量
            views = f"{random.randint(1, 999)}.{random.randint(0, 9)}w"
            font = ImageFont.truetype(self.font_path, 25)
            draw.text((x+10, y+10), views, fill=(255, 255, 255), font=font)

            # 添加时长
            duration = f"{random.randint(0, 3)}:{random.randint(0, 59):02d}"
            font = ImageFont.truetype(self.font_path, 25)
            draw.text((x+item_size-60, y+item_size-40), duration, fill=(255, 255, 255), font=font)

def _draw_bottom_nav(self, draw):
    # 绘制底部导航栏
    nav_height = 120
    nav_y = self.height - nav_height
    draw.rectangle([(0, nav_y), (self.width, self.height)], fill=(255, 255, 255))
    draw.line([(0, nav_y), (self.width, nav_y)], fill=(200, 200, 200), width=1)

    # 绘制导航图标
    icons = ["首页", "朋友", "拍摄", "消息", "我"]
    for i, icon in enumerate(icons):
        x = self.width / 5 * i + self.width / 10
        y = nav_y + 30
        font = ImageFont.truetype(self.font_path, 25)
        color = self.accent_color if icon == "我" else self.secondary_color
        draw.text((x, y), icon, fill=color, font=font, anchor="mt")

def _add_watermark(self, draw):
    font = ImageFont.truetype(self.font_path, 20)
    watermark = f"生成于 {datetime.now().strftime('%Y-%m-%d %H:%M')}"
    draw.text((self.width-20, self.height-20), watermark, fill=(200, 200, 200), 
             font=font, anchor="rd")

if name == "main":
generator = DouyinProfileGenerator()

# 生成示例截图
profile = generator.generate_profile(
    username="测试用户",
    followers=12345,
    following=678,
    likes=98765,
    avatar_path=None  # 可以传入头像路径
)

# 保存图片
profile.save("douyin_profile.png")
print("抖音主页截图已生成: douyin_profile.png")
相关文章
|
5月前
|
JSON 数据安全/隐私保护 数据格式
抖音主页截图生成器,抖音主页截图生成器在线制作,python版本分享
这个项目包含三个主要文件:main.py包含核心的图片生成逻辑,utils.py提供数据生成工具函数
|
编解码 UED
描述一下你是如何处理不同屏幕尺寸和分辨率的。
```markdown 使用响应式设计、媒体查询适应屏幕尺寸;利用弹性布局保证元素自适应;通过图像适配提供高质量视图;多设备测试与优化确保兼容性,持续关注新技术以应对屏幕多样性。 ```
225 3
|
5月前
|
机器人 数据安全/隐私保护 Python
微信自动转发机器人,微信群自动发消息机器人,微信全自动群发软件
展示一个使用Python进行基础网页自动化的示例代码,仅供学习自动化技术原理使用。
|
5月前
|
API 数据安全/隐私保护 Python
抖音无人直播软件,24小时抖音无人直播间工具,无人直播间抖音脚本
重要说明:以上代码仅为演示流媒体技术原理,实际部署需要遵守平台规则。建议通过抖音官方开放平台获取合规的直播API进行开发
|
6月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
2月前
|
安全 Linux 虚拟化
VMware Tools 12.5.4 下载 - 客户机操作系统无缝交互必备组件
VMware Tools 12.5.4 下载 - 客户机操作系统无缝交互必备组件
338 3
|
5月前
|
存储 SQL 关系型数据库
uid转二维码工具,抖音号转UID软件,数据互站共通【易语言版】
该程序包含5个核心模块:主界面、二维码生成、抖音接口、数据库存储和工具类。使用时需
|
5月前
|
定位技术 API Android开发
怎么把定位改成你想要的位置?
GPS定位修改技术指南 一、定位修改技术原理
快手自动养号插件,抖音小红书哔哩哔哩养号脚本,提高账号活跃度刷视频工具
这是一套针对抖音、快手和小红书等平台的自动养号系统源码,通过模拟真实用户行为(如看视频、点赞、评论等)提升账号权重与活跃度,突破流量限制。
|
安全 数据安全/隐私保护 Android开发
深入探索iOS系统安全机制:从基础到高级
本文旨在全面解析iOS操作系统的安全特性,从基础的权限管理到高级的加密技术,揭示苹果如何构建一个既开放又安全的移动平台。我们将通过实例和分析,探讨iOS系统如何保护用户数据免受恶意软件、网络攻击的威胁,并对比Android系统在安全性方面的差异。

热门文章

最新文章