【教学类-34-13】202505016(通义万相)4*3蝴蝶拼图(幼儿剪的圆形、三角、正方、半圆的凹凸小块和数字提示+教师剪的合并凹凸小块和数字提示卡+参考图灰色有凹凸和参考图彩色原图)

背景说明

前期做了几套凹凸拼图的模版,包含小拼图(前面图案,后面数字)参考图(前面灰色后面白色)

【教学类-34-12】20250509(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+数字提示+参考图灰色)-CSDN博客文章浏览阅读1.1k次,点赞41次,收藏7次。【教学类-34-12】20250509(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+数字提示+参考图灰色) https://blog.csdn.net/reasonsummer/article/details/147835883?spm=1011.2415.3001.5331

但是根据实操结果

【办公类-39-06】20250507批量生成通义万相图片(六)彩色背景蝴蝶(通义万相:Python自动生成图片+Python自动下载图片+Python筛选无白色的图片+集体裁剪)-CSDN博客文章浏览阅读1k次,点赞17次,收藏6次。【办公类-39-06】20250507批量生成通义万相图片(六)彩色背景蝴蝶(通义万相:Python自动生成图片+Python自动下载图片+Python筛选无白色的图片+集体裁剪) https://blog.csdn.net/reasonsummer/article/details/147749779?spm=1011.2415.3001.5331

1、幼儿很难剪得完美(四轮加工修剪白色、有些凹凸口剪的变形)

2、裁剪过程中有遗失拼图块(48块少了2块)

3、参考图只有灰色底,最好彩色和灰色都有。

背景需求

因此我希望增加一套教师裁剪的拼图作为备用,并在灰色参考图背后打印彩色参考图

前期已经设计了圆形凹凸(有教师和幼儿、参考图)

问AI合并代码

四款合并代码(遍历,四款样式都做1份,测试前后是否能对齐)

'''
目的:3*4彩色拼图(可选择圆形/三角形/半圆形/正方形凹凸)
1.凹凸小拼图+背面数字编号(幼儿剪)
2.连一起的彩色拼图+背面数字编号(教师剪)
3.正方面:灰色参考图(凹凸黑色线)+彩色参考图(原图无凹凸线,插入WORD,
4.圆形凹凸比其他三款小,所以小拼图和参考图都有两套尺寸
作者:deepseek,阿夏
时间:20250510
'''

import os
import time
import random
from PIL import Image, ImageDraw, ImageEnhance, ImageFont
from docx import Document
from docx.shared import Cm, Pt
from docx.shared import RGBColor 
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx2pdf import convert
from PyPDF2 import PdfMerger
import shutil
import math


for zz in range(1,5):
# 配置参数
    sj = 1  # 1:顺序插入 2:乱序

    shape_type = zz # 1:圆形凹凸 2:三角形凹凸 3:半圆形凹凸 4:正方形凹凸
    yangshi = 0.56  # 凹凸形状参数
    wide = 3  # 行数
    high = 4  # 列数
    Number = wide * high
    border_width = 5  # 边框宽度

    # 半圆形参数
    circle_radius = 130   # 半圆半径(像素)
    circle_offset = 0     # 凹凸偏移量(像素)
    protrusion_prob = 0.5 # 凹凸密度(0-1之间)

    # 正方形参数
    square_size = 50     # 正方形凹凸的大小(像素)
    square_offset = -10  # 凹凸的偏移量(像素)

    # 路径设置
    path = r'D:\20250506彩色蝴蝶无白色'
    prz = os.path.join(path, "01图片")
    pathz = [os.path.join(prz, f) for f in os.listdir(prz) if f.endswith(".png")]
    print(f"找到{len(pathz)}张原始图片")

    # 画布尺寸配置
    canvas_width = 2830  # 画布宽度
    canvas_height = 1950  # 画布高度
    cell_width = canvas_width // high
    cell_height = canvas_height // wide

    def convert_to_light_gray(image):
        """将图像转为浅灰色(保留透明度)"""
        gray = image.convert('L')
        enhancer = ImageEnhance.Brightness(gray)
        light_gray = enhancer.enhance(1.9)
        return Image.merge('RGBA', (light_gray, light_gray, light_gray, image.split()[3]))

    def draw_border_on_edge(img, border_width=5):
        """在透明与非透明交界处绘制黑色实线"""
        img = img.convert("RGBA")
        width, height = img.size
        draw = ImageDraw.Draw(img)
        pixels = img.load()
        
        edge_map = set()
        for x in range(width):
            for y in range(height):
                if pixels[x, y][3] > 0:
                    for dx, dy in [(-1,0),(1,0),(0,-1),(0,1)]:
                        nx, ny = x + dx, y + dy
                        if 0 <= nx < width and 0 <= ny < height:
                            if pixels[nx, ny][3] == 0:
                                edge_map.add((x, y))
                                break
        
        for x, y in edge_map:
            for i in range(max(0, x-border_width//2), min(width, x+border_width//2+1)):
                for j in range(max(0, y-border_width//2), min(height, y+border_width//2+1)):
                    if (i - x)**2 + (j - y)**2 <= (border_width//2)**2:
                        draw.point((i, j), fill=(0, 0, 0, 255))
        return img

    def SplitImages(img_path, row, col):
        """分割原始图片为row×col的小图"""
        img = Image.open(img_path).convert("RGBA")
        imgSize = img.size
        splitW = int(imgSize[0]/col)
        splitL = int(imgSize[1]/row)
        pimg = img.load()

        imbList = []
        for i in range(row):
            rowList = []
            for j in range(col):
                imb = Image.new('RGBA', (splitW, splitL), (255,255,255,0))
                pimb = imb.load()
                for k in range(j * splitW, (j + 1) * splitW):
                    for z in range(i * splitL, (i + 1) * splitL):
                        pimb[k - j * splitW, z - i * splitL] = pimg[k,z]
                rowList.append(imb)
            imbList.append(rowList)
        return imbList

    def Resize(img, rizeW, rizel, pastePoint=None): 
        """调整图像大小"""
        if pastePoint is None:
            pastePoint = [0, 0]
        new_im = Image.new('RGBA', [rizeW, rizel], (255,255,255,0))
        new_im.paste(img, pastePoint)
        return new_im

    def point_in_triangle(pt, triangle):
        """判断点是否在三角形内"""
        def sign(p1, p2, p3):
            return (p1[0] - p3[0])*(p2[1] - p3[1]) - (p2[0] - p3[0])*(p1[1] - p3[1])
        
        b1 = sign(pt, triangle[0], tria
<think>好的,我现在需要处理用户关于“通义”的查询,用户想了解它的介绍、特点应用场景。首先,我得明确用户的意是获取关于这个AI工具的基本信息、独特之处以及实际用途。接下来,我需要调用网络搜索工具来收集关信息。 首先,搜索“通义”的基本介绍。根据搜索结果,通义是阿里云推出的AI绘画工具,属于通义大模型体系的一部分。它支持文生功能,能够生成高质量的像,适用于多种场景。 然后是特点部分。搜索结果提到其基于先进的深度学习算法,特别是扩散模型超大规模多模态预训练模型。支持中文输入,提供多种风格自定义参数,以及实时渲染技术。这些技术点需要整理成用户易懂的语言。 应用场景方面,用户可能关心实际用途。搜索结果指出在艺术创作、电商设计、教育培训、广告营销游戏开发中的应用。需要具体说明每个场景下的使用方式,比如电商产品生成、教学素材制作等。 现在需要整合信息,确保符合用户的要求:分方法或步骤,每个部分换行,不使用第一人称或步骤词汇。同时注意引用分散在回答中,避免堆砌在末尾。检查是否有代码或公式需要处理,这里可能没有,但需保持格式规范。最后生成关问题,确保基于内容且至少三个。 可能遗漏的信息需要确认,比如是否支持视频生成,或者具体的技术细节是否需要进一步搜索。但根据现有资料,通义主要聚焦像生成,因此应用场景中的视频部分可能需要核实。不过有提及视频生成功能,所以可以保留但标注为测试阶段。 最后,关问题要围绕核心内容,比如技术原理、与其他工具的比较、使用教程等。确保问题关且有逻辑联系,帮助用户深入探索。</think>通义是阿里云推出的AI绘画生成工具,隶属通义大模型产品体系,具备文生、风格迁移等功能,支持像与视频内容生成。其核心技术基于超大规模多模态预训练模型,通过深度学习实现高质量内容输出。 **核心特点** - **多模态生成能力**:支持文本、像双输入模式,支持生成二次元、3D卡通、中国风等多种艺术风格作品,最高可输出1024×1024分辨率- **中文语义理解优化**:针对中文语境进行专项训练,能更准确解析"汉服少女"、"水墨丹青"等本土化表述 - **实时渲染技术**:采用改进型扩散模型(Diffusion Model),单张像生成耗时控制在3-5秒 - **参数化控制**:开放提示词权重、随机种子等10+调节参数,支持生成结果精细化调整 **应用场景** **艺术设计领域**:快速生成插画、角色设定、场景概念,支持艺术家进行创意延展 **电商视觉制作**:自动生成商品展示、营销海报,支持背景替换、风格迁移等功能 **教育培训应用**:创建教学示意、历史场景还原图,辅助可视化知识呈现 **视频内容创作**(测试阶段):基于静态像生成动态视频,支持口型同步、表情驱动等特性 ```python # 示例API调用代码(需申请阿里云API密钥) from dashscope import ImageSynthesis def text_to_image(prompt): response = ImageSynthesis.call( model=ImageSynthesis.Models.wanx_v1, prompt=prompt, negative_prompt="低质量", # 负面提示词过滤 cfg_scale=7, # 提示关性系数 style=&#39;<水彩画>&#39; # 指定生成风格 ) return response.output.url ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值