python 制作3d立体隐藏图

这篇具有很好参考价值的文章主要介绍了python 制作3d立体隐藏图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生成文件的3d图,例子:
文字:
3d隐藏图,python,3d,开发语言
隐藏图:
3d隐藏图,python,3d,开发语言

使用建议:
1、建议不用中文,因为中文太复杂,生成立体图效果不好。
2、需要指定FONT_PATH,为一个ttf文件,linux在/usr/share/fonts目录下,windows在C:\Windows\Fonts
3、建议字体TEXT_SIZE调大,不然不好分辨
4、指定的TEXT不要太长
5、多试几次,找到合适的纹理文章来源地址https://www.toymoban.com/news/detail-800002.html

from PIL import Image, ImageDraw, ImageFont
from random import *
import numpy as np
from io import BytesIO


FONT_PATH = '/usr/share/fonts/dejavu/DejaVuSans.ttf'   # 字体位置,linux在/usr/share/fonts/,windows
TEXT = 'love yannis'
TEXT_SIZE = 100 # 字体大小
WIDTH = 100 + int(len(TEXT) * TEXT_SIZE / 1.8)
HEIGHT = 256
SHIFT = 4 # 叠加位移

# 生成纹理
def clamp(n, smallest, largest):
    return max(smallest, min(n, largest))

def rand_ratio(base=1, delta=1):
    return delta * randint(1,100)*1.0/100 + base

rand_ratios = [rand_ratio(), rand_ratio(), rand_ratio()]

color_starts = [randint(0,200), randint(0,200), randint(0,200)]

def rand_color(i):
    return clamp(randint(color_starts[i],int(rand_ratios[i] * color_starts[i])), 0, 255) 

def rand_colors():
    return (rand_color(0),rand_color(1),rand_color(2))

perodic_x = 40
perodic_y = 40
texture = np.zeros((perodic_x, perodic_y, 3))
same_to_last_x = [False] * perodic_x
same_to_last_y = [False] * perodic_y
for x in range(0, perodic_x):
    same_to_last_x[x] =  random() < 0.1
for y in range(0, perodic_y):
    same_to_last_y[y] =  random() < 0.3

texture[0][0] = rand_colors()

for x in range(0,perodic_x):
    if same_to_last_x[x]:
        texture[x][0] = texture[x-1][0]
    else:
        texture[x][0] = rand_colors()

# 纹理平铺
for x in range(0, perodic_x):
    for y in range(0,perodic_y):
        if same_to_last_y[y]:
            texture[x][y] = texture[x][y-1]
        elif same_to_last_x[x]:
            texture[x][y] = texture[x-1][y]
        else:
            texture[x][y] = rand_colors()

# 生成纹理平铺图片
img = Image.new('RGB', (WIDTH, HEIGHT), color = 'white')
img_draw = ImageDraw.Draw(img) 
for x in range(0, WIDTH):
    for y in range(0,HEIGHT):
        color = texture[x % perodic_x][y % perodic_y].astype(int).tolist()
        img_draw.point([x,y], fill = tuple(color))


# 生成文字
text = Image.new('RGB', (WIDTH, HEIGHT), color = 'black')
text_draw = ImageDraw.Draw(text) 
font = ImageFont.truetype(FONT_PATH, size=TEXT_SIZE)
text_draw.text((50,(HEIGHT-TEXT_SIZE)/2), TEXT, font=font, fill='white')

# 文字叠加
img_mat = np.asarray(img)
text_mat = np.asarray(text)

for x in range(0, WIDTH - SHIFT):
    for y in range(0, HEIGHT):
        if text_mat[y][x][0] != 0:
            img_draw.point([x,y], fill = tuple(img_mat[y, x - SHIFT].tolist()))
text.save('../tmp2.png', 'png')
img.save('../tmp.png', 'png')

到了这里,关于python 制作3d立体隐藏图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python功能制作之3D方块

    用python写一个黑窗口,窗口里面有一个白色的3D方块,左键按下后移动可以旋转以各个视角来看方块。 当然有需要的话,可以自己在代码中去更改颜色,直接通过RBG的参数进行更改即可。 做了两个函数: init[初始化] 和 draw_cube[绘制方块]。 如果需要旋转,将清空缓冲上面的

    2024年02月12日
    浏览(25)
  • Unity 3D游戏开发+脚本编程完整指南:制作第一个游戏:3D滚球跑酷

    教程相关资源 Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip 本节利用前面的知识来实现第一个较为完整的小游戏,如 图 1-21 所示。 图1-21 3D滚球跑酷游戏完成效果 1. 功能点分析 游戏中的小球会以恒定速度向前移动,而玩家控制着小球 左右移动来躲避跑道中的黄色障

    2024年02月21日
    浏览(51)
  • 制作立体图像实用软件:3DMasterKit 10.7 Crack

    3DMasterKit 软件专为创建具有逼真 3D 和运动效果的光栅图片而设计:翻转、动画、变形和缩放。 打印机、广告工作室、摄影工作室和摄影师将发现 3DMasterKit 是一种有用且经济高效的解决方案,可将其业务扩展到新的维度,提高生成的 3D 图像和光栅产品的质量和生产力。 多视

    2024年02月09日
    浏览(47)
  • 3D立体盒子练习

    HTML关键代码: CSS关键代码:

    2024年01月23日
    浏览(32)
  • OpenGL实现3D立体显示

    立体显示是指通过使用透视和深度感知来模拟真实世界中的三维效果。在计算机图形学中,OpenGL是一种广泛使用的图形库,它提供了一系列功能强大的工具和函数来实现各种图形效果,包括3D立体显示。在本文中,我们将介绍如何使用OpenGL实现基本的3D立体显示效果,并提供相

    2024年02月04日
    浏览(34)
  • 3D立体墙照片

    2024年02月03日
    浏览(33)
  • 3D立体匹配入门 - 视差计算

    1、左右视图成功匹配的窗口,具有相同的像素 这个是最经典的假设,几乎所有视差图计算都用上了他,通过匹配左右窗口像素,得到最佳匹配对应的x轴坐标差,就是视差 2、像素P的视差只与其领域有关 这个是基于马尔可夫性质,做代价聚合的时候,基于这个假设就用周围的

    2024年02月04日
    浏览(43)
  • CSS3 立体 3D 变换

    个人主页: 学习前端的小z 个人专栏: HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 什么是3D的场景呢?2D场景,在屏幕水平和垂直的交叉轴线x轴和y轴。 3D场景,在垂直于屏幕的方法,相对于3D多出个Z轴。 Z轴

    2024年04月15日
    浏览(39)
  • echarts-3D立体饼图(1)

    先看效果图 1、echarts的版本使用的是: script src=\\\"https://cdn.bootcdn.net/ajax/libs/echarts/5.4.1/echarts.min.js\\\"/script script src=\\\"https://cdn.bootcdn.net/ajax/libs/echarts-gl/2.0.8/echarts-gl.js\\\"/script 2、饼图可自旋转,鼠标移上也可转动,不想让旋转grid3D:{viewControl:{autoRotate:false}} 3、 3D饼图主义echarts的

    2024年02月09日
    浏览(34)
  • 【3D图像分类】基于Pytorch的3D立体图像分类--基础篇

    在我们一般的图像数据的采集场景中,得到的大多是二维图像。比如手机拍照,所以大多数深度学习网络的雏形都是基于二维图像展开的工作。 但是,在某些场景下,比如 医学影像CT数据 ,监控场景 连续拍摄的视频 和自动驾驶使用到的 激光点云 等等,多是连续的、多层的

    2023年04月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包