【教学类-34-07】20230726拼图(彩色图片+菱形凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)

news2024/11/18 21:26:52

作品展示:

背景需求 

我尝试将拼图的“圆形凹凸角”变成"正方形凹凸角”,没有成功,但做出了“菱形凹凸角”。

实用性思考:

1、这种菱形凹凸角与正方形结构近似,裁剪难度中等(比圆角容易剪)

2、但是它同样要对细节进行精剪,不适合集体教学(操作时间长)。

3、但可以适当打印几份,放在个别化美工区里做分层差异的学具。


'''
目的:3*4彩色拼图(有菱形凹凸)
作者:阿夏
时间:2023年7月25日 15:43
'''

import os

# yangshi=float(input('输入造型数字:凹凸基础0.5(链边太细);凹凸最适宜0.56;纯方块:7\n'))
# pic_width=int(input('请输入底边像素(1024)\n'))# 长度 把MB图片缩小一点,生成的拼图块格式也小一点1024
# pic_height=int(input('请输入侧边像素(768)\n'))# 宽度768
Number=12
# int(input('多少块3*4(12块)\n'))# 宽度768
# pic_puzzle_longnum=int(input('请输入侧边的积木块数量(3)\n'))# 积木块数量4*6=12块 中的4  768
# pic_puzzle_shortnum=int(input('请输入底边的积木块数量(4)\n'))# 积木块数量4*6=12块 中的6  1024
# pic_puzzle_side_long=float(input('请输入word里面积木块图片的长度\n'))# 小拼图块的长度  1.5正方形
# pic_puzzle_side_short=float(input('请输入word里面积木块图片的宽度\n'))# 小拼图块的宽度  1.5正方形
# fenlan=int(input('请输入word里面分栏数量\n'))# 1.5  4*6时  6列

'''
A4短边 最多4格,1.7
3格 2.3
2格 3.6

拼贴后的作品只有A4一半大小

项目1:横版照片
造型:0.56凹凸,7方形
样式:4:3
像素:1024*768
格子:4*6=24块
积木块长宽:1.7*1.7
分栏:6

项目2:横版照片 16宫格照片
样式:1:1
像素:1024*1024
格子:4*4
积木块长宽:1.7*1.7
分栏:5

项目3:横版照片 9宫格照片
样式:1:1
像素:1024*1024
格子:3*3
积木块长宽:2.3*2.3
分栏:3
(比4*6图片小)

项目4:横版照片 4宫格照片
样式:1:1
像素:1024*1024
格子:2*2
积木块长宽:3.6*3.6
分栏:2
(比4*6图片小)

2张A4打印纸 
成品a4一半

项目1:横版照片
造型:0.56凹凸,7方形
样式:4:3
像素:1024*768
格子:4*6=24块
积木块长宽:2.3*2.3
分栏:4
'''


# pic=['jpg','png','tif']
# for i in pic:
#     # print(i)
#     geshi.append(i)
# print(geshi)
# bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,
# cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp,avif,apng 等。”

#
print('----------第1步:读取总图(大图)所在的位置:-----------')

pathz=[]
prz="C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\凸起图案拼图\\总图"
# 过滤:只保留png结尾的图片
imgs1z=os.listdir(prz)
for img1z in imgs1z:
    if img1z.endswith(".jpg"):
        pathz.append(prz+'\\'+img1z)
# 所有总图片(原图)的路径
print(pathz)
print(len(pathz))# 一共几张图片(2张测试)
# print(imgs1z)



print('------第2步,调整照片大小(把照片缩小格式(4:3横版、3:4竖版、1:1九宫格)这里是1024*768-------')
# 先缩小图片格式,这样导出的拼图块们的容量小一点(适合打印版本A4)
# 不用第一部分,每张拼图块图片很大,4MB照片拆分24张,每张1MB(适合电子白板教学,高清图片)
# '''作者:幸福清风https://blog.csdn.net/xun527/article/details/117085712'''

from PIL import Image
import os.path
import glob

def convertjpg(jpgfile,outdir,width=1024,height=768):      #横版本 把 16-266KB的照片转换成540*405像素,照片大小16*43KB,拆分后正好4*6一页
# def convertjpg(jpgfile,outdir,width=405,height=540):      #竖版照片 把 16-266KB的照片转换成540*405像素,照片大小16*43KB,拆分后正好4*6一页
      # 400*300宽高像素  15-24K
      # 520*390宽高像素  29-30K
# 1024,height=768  哪怕只有45K,也是格子很大
    img=Image.open(jpgfile)
    try:
        new_img=img.resize((width,height),Image.BILINEAR)
        if not os.path.exists(outdir):
            os.mkdir(outdir)
        new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
    except Exception as e:
        print(e)

print('------第3步,读取大图的位置,生成凹凸平涂------')

# '''多照片()''' 
# 读取路径下的一个文件
for w in range(len(pathz)):    # 0-2

    # # 新建一个”装N份word和PDF“的文件夹
    os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\小图{}'.format(w+1))    # 1-2

    path = '{}'.format(pathz[w])
    print(path)
    # r"C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\1.jpg"# 来源

    # # 读取路径下的一个文件
    # path = r"C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\1.jpg"# 来源

    # for jpgfile in glob.glob(path):
    #     convertjpg(jpgfile,r"C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\小图")# 去向
    # '''# 全部照片'''
    # path = r"C:\Users\Administrator\Desktop\凸起图案拼图\原图\*.{}".format(geshi)
    # for jpgfile in glob.glob(path):
    #     convertjpg(jpgfile,r"C:\Users\Administrator\Desktop\凸起图案拼图\照片调整")


    print('------以下部分 生成带凹凸拼图-------')
    '''https://blog.csdn.net/zbbzb/article/details/120127932 作者:zbbzb'''

    # import os
    # from PIL import Image
    # # 分隔成n*m个方块
    # # 分割几行几列, 二维数组保存
    # def SplitImages(img_path, row, col):
    #     path_name = os.path.dirname(img_path)
    #     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 = []
    #         l = (i + 1) * splitL
    #         for j in range(col):
    #             w = (j + 1) * splitW
    #             imb = Image.new('RGBA', (splitW, splitL),(255,255,255,0))
    #             pimb = imb.load()

    #             for k in range(j * splitW, w):
    #                 for z in range(i * splitL, l):
    #                     pimb[k - splitW * j, z - i * splitL] = pimg[k,z]
    #             dirPath = path_name + "/" + str(i*10 + j) + ".png"
    #             # imb.save(dirPath)
    #             rowList.append(imb)
    #         imbList.append(rowList)

    #     return imbList

    

    # 最终版:随机凹凸, 考虑圆心偏移
    import os
    from PIL import Image
    import random

    # 分割几行几列, 二维数组保存
    def SplitImages(img_path, row, col):
        path_name = os.path.dirname(img_path)
        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 = []
            l = (i + 1) * splitL
            for j in range(col):
                w = (j + 1) * splitW
                imb = Image.new('RGBA', (splitW, splitL),(255,255,255,0))
                pimb = imb.load()

                for k in range(j * splitW, w):
                    for z in range(i * splitL, l):
                        pimb[k - splitW * j, z - i * splitL] = pimg[k,z]
                dirPath = path_name + "/" + str(i*10 + j) + ".png"
                # imb.save(dirPath)
                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 SplitCircle(imbList, imgPath):
        path_name = os.path.dirname(imgPath)
        img = Image.open(imgPath).convert("RGBA")
        imgSize = img.size

        col = len(imbList[0])
        row = len(imbList)

        if col == 1 and row == 1:
            return 

        splitW = int(imgSize[0]/col)
        splitL = int(imgSize[1]/row)

        minV = min(splitW, splitL)
        r_d = int(minV / 4) # 要计算 两个不能比 l 长 并且加上 offset 也不能超过 l
        r_offset = int(minV / 8)

        pSplitW = splitW + (r_d + r_offset) * 2
        pSplitL = splitL + (r_d + r_offset) * 2

        pimg = img.load()
        
        # 存(row - 1) * (col - 1) 个中心点
        pointList = []
        for i in range(row):
            colPointList = []
            for j in range(col):
                colPoint = []
                rowPoint = []
                if j != col - 1:
                    colPoint = [splitW * (j + 1), int(splitL/2) + i * splitL]
                if i != row - 1:
                    rowPoint = [int(splitW / 2) + j * splitW, splitL * (i + 1)]
                colPointList.append({'colPoint': colPoint, 'rowPoint': rowPoint})

                imbList[i][j] = Resize(imbList[i][j], pSplitW, pSplitL, [r_d + r_offset, r_d + r_offset])
                dirPath = path_name + "/" + str(i*10 + j) + ".png"
                # imbList[i][j].save(dirPath)
            pointList.append(colPointList)

        for i in range(row):
            for j in range(col):
                imbImg = imbList[i][j]
                new_img = imbImg

                # 圆心靠左 靠右, 默认靠右
                lrandNum = random.randint(0, 999999)
                drandNum = random.randint(0, 999999)
                lrRight = True
                drRight = True
            
                if lrandNum < 500000:
                    lrRight = False
                if drandNum < 500000:
                    drRight = False

                new_img_imb = new_img.load()

                if j != col - 1:

                    if lrRight :
                        new_next_img = imbList[i][j + 1]
                        new_next_img_imb = new_next_img.load()
                        # 左右
                        for k in range((j + 1) * splitW, (j + 1) * splitW + r_d + r_offset):
                            for z in range(i * splitL, (i + 1) * splitL):
                                r_w = pointList[i][j]['colPoint'][0] + r_offset
                                r_l = pointList[i][j]['colPoint'][1] 
                                r = ((pow(abs(k - r_w),1)+pow(abs(z - r_l),1)))*2
                                # 凹凸圆球的直径,作者原设置0.5,感觉三个凹型的拼图连接地方太细了,幼儿容易剪断,所以这里改成0.55
                                #  测试结果:0.3不规则矩形块(图形类似俄罗斯方块)
                                # 0.7 方块,四周 有很小的圆点(不连接) 内部有很小空心圆点(适合电子版)
                                # 0.6 方块,四周 有很大的圆点(不连接) 内部有很小空心圆点(适合电子版)
                                if r/2 < r_d:
                                    new_img_imb[k - j * splitW + r_d + r_offset, z - i * splitL + r_d + r_offset] = pimg[k, z]
                                    new_next_img_imb[k - (j + 1) * splitW + r_d + r_offset, z - i * splitL + r_d + r_offset] = (255,255,255,0)

                        imbList[i][j + 1] = new_next_img
                    else:
                        new_next_img = imbList[i][j + 1]
                        new_next_img_imb = new_next_img.load()
                        # 左右
                        for k in range((j + 1) * splitW - r_d - r_offset, (j + 1) * splitW):
                            for z in range(i * splitL, (i + 1) * splitL):
                                r_w = pointList[i][j]['colPoint'][0] - r_offset
                                r_l = pointList[i][j]['colPoint'][1]
                                r = ((pow(abs(k - r_w),1)+pow(abs(z - r_l),1)))*2
                                if r/2 < r_d:
                                    new_next_img_imb[k - (j + 1) * splitW + r_d + r_offset, z - i * splitL + r_d + r_offset] = pimg[k, z]
                                    new_img_imb[k - j * splitW  + r_d + r_offset, z - i * splitL + r_d + r_offset] = (255,255,255,0)

                        imbList[i][j + 1] = new_next_img   

                if i!= row - 1:

                    if drRight:
                        new_down_img = imbList[i + 1][j]
                        new_down_img_imb = new_down_img.load()
                        # 上下
                        for k in range(j * splitW, (j + 1) * splitW):
                            for z in range((i + 1) * splitL, (i + 1) * splitL + r_d + r_offset):
                                r_w = pointList[i][j]['rowPoint'][0]
                                r_l = pointList[i][j]['rowPoint'][1] + r_offset
                                r = ((pow(abs(k - r_w),1)+pow(abs(z - r_l),1)))*2
                                if r/2 < r_d:
                                    new_img_imb[k - j * splitW + r_d + r_offset, z - i * splitL + r_d + r_offset] = pimg[k, z]
                                    new_down_img_imb[k - j * splitW + r_d + r_offset, z - (i + 1) * splitL + r_d + r_offset] = (255,255,255,0)
                
                        imbList[i + 1][j] = new_down_img
                    else:
                        new_down_img = imbList[i + 1][j]

                        new_down_img_imb = new_down_img.load()
                        # 上下
                        for k in range(j * splitW, (j + 1) * splitW):
                            for z in range((i + 1) * splitL - r_d - r_offset, (i + 1) * splitL):
                                r_w = pointList[i][j]['rowPoint'][0]
                                r_l = pointList[i][j]['rowPoint'][1] - r_offset
                                r = ((pow(abs(k - r_w),1)+pow(abs(z - r_l),1)))*2
                                if r/2 < r_d:
                                    new_down_img_imb[k - j * splitW + r_d + r_offset, z - (i + 1) * splitL + r_d + r_offset] = pimg[k, z]
                                    new_img_imb[k - j * splitW + r_d + r_offset, z - i * splitL + r_d + r_offset] = (255,255,255,0)

                        imbList[i + 1][j] = new_down_img
            
                imbList[i][j] = new_img
        # n=[]    
        # for  i  in range (0,row*col):
        #     n.append(i)
        # print(n)
        print('----把每张图片的12份小图放入一个文件夹小图(每张大图生成一个文件夹)----')
        for i in range(0,row):        # 3
            for j in range(0,col):     # 4
                n=3*4
                dirPath = r"C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图" + "/小图{}/{}.png".format(w+1,'%02d'%(i*4 + j) )
                # 在路径下的“拼图”文件夹下
                #
                imbList[i][j].save(dirPath)


    if __name__ == '__main__':
        # dirPath =r"C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/小图/"
        
        SplitCircle(SplitImages(pathz[w], 3,4), pathz[w])
        # SplitCircle(SplitImages(pathz[w], pic_puzzle_longnum, pic_puzzle_shortnum) , pathz[w])
        # 横版高4长6
        # 第一个数字是高度4张图片  第二个数字是宽度3张
# '''
# 71.8KB的图片4*6 24张3*8摆放在word 上下左右 1 1 1 1

print('-----第4步:拼图块导入docx打印-----')

print('----------4-1:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\零时Word')


print('---提取小图片路径------------')

path=[]
for r in range(len(pathz)):
    pr="C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\凸起图案拼图\\小图{}".format(r+1)
    # 过滤:只保留png结尾的图片
    imgs1=os.listdir(pr)
    for img1 in imgs1:
        if img1.endswith(".png"):
            path.append(pr+'\\'+img1)
    # 所有图片的路径
print(path)
print(len(path))
# 216条路径(18张*12图)
# print(imgs1)

print('----------第3步:随机抽取9张图片 ------------')

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
import random

import os,time
import docx
from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn

from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor


for nn in range(0,len(pathz)):    #28/2 0-14
    
    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\长方形模板.docx')
#     # 制作列表    
    
    # 从左边图列表和右边图列表中抽取图片(12张图片,可能5个向左、7个向右边)
    # 24条里面0和12条是一组,2个里面随机抽1一个,1和13是一组,2个里面随机抽一个…… 抽出12个图片后

    r=[]    
    c=[]
    r.append(path[nn*12:nn*12+12])        # 左侧第一份,
    
    # r.append(path[nn*24:nn*24+24])        # 连续12张图片、2份字母插入同一份A4
    
    # print(r)
    # 再打乱顺序读取12个      
    for a in r:
        for b in a:
            c.append(b)
    print(c)    
    
    figures=random.sample(c[0:12],Number)    # 前9张不重复打乱     
    # figures2=random.sample(c[4:8],Number)    # 后9张不重复打乱
    # figures3=random.sample(c[12:18],Number)    # 后6张不重复打乱
    # figures4=random.sample(c[18:24],Number)    # 后6张不重复打乱
    
    # 9+9张不重复打乱图片合并
    # figures=figures1+figures2
    # figures=figures1+figures2+figures3+figures4
    print(figures)

    # # 每2个学号一组的列表 m名字里面的前两个数字(学号)
    # name2=name[nn*2:nn*2+2]
#     print(name2)

    # for z in range(2):        # 5行组合循环2次 每页两张表
              

    # 单元格位置3*3格
    bg=[]
    # 前1+3+1行不要写入 从4动
    for x in range(0,3):        # 3行 索引1行2行3行
        for y in range(0,4):    # 3列 索引0列1列2列
                ww='{}{}'.format(x,y)
                bg.append(ww)
    print(bg) 

    table = doc.tables[0]          

    for t in range(len(bg)):   # 02
        pp=int(bg[t][0:1])    
        qq=int(bg[t][1:2])  
        # print(p)               
        k=figures[t]         

        print(pp,qq,k)

        # 写入图片
        run=doc.tables[0].cell(pp,qq).paragraphs[0].add_run()        # 在第1个表格中第2个单元格内插入国旗
        run.add_picture('{}'.format(k),width=Cm(6.05),height=Cm(6.05))
        # 单元格宽度6.15   6.15
        table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中 
    
#         # 姓氏描画文字
#         title=[]
#         for t in range(4):
#             title.append(name2[z][0])
#         print(title)

#         wz=[]
#         # 前1+3+1行不要写入 从4动
#         for x1 in range(0,3):        # 3行 索引1行2行3行
#             for y1 in range(0,4):    # 3列 索引0列1列2列
#                     ww='{}{}'.format(x1,y1)
#                     wz.append(ww)
#         print(wz)           
            
        
    doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\凸起图案拼图\零时Word\{}.docx'.format('%02d'%nn))   
    from docx2pdf import convert

    # docx 文件另存为PDF文件
    inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在
    outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile, 'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)
    
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    
# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:
    print(pdf)
    file_merger.append(pdf)
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/(打印合集)菱形凹凸图案拼图A4一页一份(3乘4).pdf")
file_merger.close()
# doc.Close()

# # # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/零时Word') #递归删除文件夹,即:删除非空文件夹

for i in range(len(pathz)):    
    shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/凸起图案拼图/小图{}'.format(i+1)) #递归删除文件夹,即:删除非空文件夹

视频gif作品展示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100天软件设计师备考计划

我已经毕业并且刚刚开始工作&#xff0c;目前在一家小公司从事Java开发工作。虽然我的工作轻松&#xff0c;但我希望在空闲时间里能够提升自己。由于我的专业与计算机相关&#xff0c;我有一定的基础&#xff0c;因此我计划在2023年用100天的时间考取软件设计师资格。在学习的过…

GB/T 25000.51解读——软件产品的易用性怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…

怎么在电脑中创建虚拟加密磁盘?

在生活和工作中&#xff0c;我们可以将重要数据存放在电脑加密磁盘中。可是不是每个电脑都拥有加密磁盘的。那么我们该怎么在电脑中创建虚拟加密磁盘呢&#xff1f; 将普通磁盘加密 我们可以将重要数据分类存放在一个磁盘中&#xff0c;随后将该磁盘加密&#xff0c;使其变成加…

Mac 快速生成树形项目结构目录

我这里使用的是通过包管理 Homebrew安装形式。没有安装的话可以自行搜索 Homebrew 安装方式 brew install tree直接到项目的根目录执行 tree 命令 tree 效果如下&#xff1a; or &#xff1a; tree -CfL 3效果如下&#xff1a;

Java的第十三篇文章——JAVA多线程

目录 学习目标 1. 线程的基本概念 1.1 进程 1.2 线程 2. Java实现线程程序 2.1 java.lang.Thread类 2.2 线程的内存图 2.3 Thread类的方法 3. Java实现线程程序 3.1 java.lang.Runnable接口 3.2 实现接口的好处 4. 线程安全 4.1 售票例子 4.2 同步代码块 4.3 同…

大学生活题解

样例输入&#xff1a; 3 .xA ... Bx.样例输出&#xff1a; 6思路分析&#xff1a; 这道题只需要在正常的广搜模板上多维护一个— —方向&#xff0c;如果当前改变方向&#xff0c;就坐标不变&#xff0c;方向变&#xff0c;步数加一&#xff1b;否则坐标变&#xff0c;方向不…

在使用《快递批量查询高手》时从TXT文本导入的快递单号出现乱码如何解决。

在日常 工作中&#xff0c;有没有单号用TXT 文档保存吗&#xff1f;那么没有出现这种情况呢&#xff0c;打开TXT文档进去看都是正常没有问题&#xff0c;一但导入软件中就出现乱码的&#xff1f;遇到这个种情况需要什么解决呢&#xff1f;小编今天就教 您一招解决好方法&#x…

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…

CSS3新增选择器(属性选择器、结构伪类选择器、伪元素选择器)

1 属性选择器 属性选择器&#xff08;[属性]&#xff09;可以根据元素的属性和属性值来对符合要求的元素进行选择。 属性选择器的基础语法如下表&#xff1a; 语法说明标签[属性] {}选择有目标属性的标签标签[属性"value"] {}选择有目标属性且属性值为"value…

iOS--通知、代理、单例模式总结

通知 概要 观察者和被观察者都无需知晓对方&#xff0c;只需要通过标记在NSNotificationCenter中找到监听该通知所对应的类&#xff0c;从而调用该类的方法。并且在NSNotificationCenter中&#xff0c;观察者可以只订阅某一特定的通知&#xff0c;并对齐做出相应操作&#xf…

管理类联考——数学——记忆篇——不同角度解读——四、数据分析——1.计数原理/排列组合

计数原理 1.计数原理 1.1 加法原理、乘法原理 1.2 排列与排列数 1.3 组合与组合数 PS&#xff1a;图标说明 ⛲️&#xff1a;陈jian &#x1f475;&#xff1a;鑫quan &#x1f469;&#xff1a;张紫chao &#x1f482;&#xff1a;MBA大shi &#x1f63d;&#xff1a;海mian…

小程序UV:衡量用户规模与活跃度的重要指标

什么是UV UV是Unique Visitor&#xff08;独立访客&#xff09;的缩写&#xff0c;指的是在特定时间段内访问某个网站、应用或平台的独立用户数量。UV是根据设备、IP地址、Cookie等来识别不同的用户&#xff0c;对于相同的用户多次访问&#xff0c;只计算为一个UV。UV是衡量网…

linux判断端口是否占用(好用)

netstat 一般的话使用 netstat -tunlp | grep xxx参数作用-t指明显示TCP端口-u指明显示UDP端口-l仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)-p显示进程标识符和程序名称&#xff0c;每一个套接字/端口都属于一个程序。-n不进行…

随机数检测(五)

随机数检测&#xff08;五&#xff09;- 检测工具 1 检测规范2 检测量3 检测项目4 检测工具 1 检测规范 随机数检测应遵循GM/T 0005-2021和GM/T 0062-2018两个标准。 首先根据产品实际情况确定产品类型。 随机数检测量和检测项目可参考GM/T 0062-2018对不同类型产品的要求。不…

C++类与对象 - 2(构造函数和析构函数)(超详细)

构造函数和析构函数 - 超详细讲解 1. 构造函数1.1 概念1.2特性 2. 析构函数2.1 概念2.2特性 1. 构造函数 1.1 概念 对于以下Date类&#xff1a; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <&l…

7p透明屏的制造过程复杂琐屑吗?

7p透明屏是一种新型的显示技术&#xff0c;它可以使屏幕变得透明&#xff0c;让用户可以透过屏幕看到背后的物体。这种技术在科幻电影中经常出现&#xff0c;但现在已经成为现实。 7p透明屏的工作原理是利用液晶显示技术和透明材料。液晶显示技术是一种通过控制液晶分子的排列…

Android 之 动画合集之帧动画

本节引言&#xff1a; 从本节开始我们来探究Android中的动画&#xff0c;毕竟在APP中添加上一些动画&#xff0c;会让我们的应用变得 很炫&#xff0c;比如最简单的关开Activity&#xff0c;当然自定义控件动画肯定必不可少啦~而Android中的动画 分为三大类&#xff0c;逐帧动画…

“xAI正式成立,GPT大战重燃,AI大模型的现状与发展怎么看?“

文章目录 每日一句正能量前言“反AI斗士”马斯克进军AI&#xff0c;你怎么看&#xff1f;回顾上半年的“百模大战”&#xff0c;中国的AI产业怎么样了&#xff1f;AI大模型这把火&#xff0c;还能怎么烧&#xff1f;后记 每日一句正能量 世界上最有力的一句话&#xff0c;不是给…

探索UCI心脏病数据:利用R语言和h2o深度学习构建预测模型

一、引言 随着机器学习模型在实际应用中的广泛应用&#xff0c;人们对于模型的解释性和可理解性日益关注。可解释性机器学习是指能够清晰、透明地解释机器学习模型决策过程的一种方法和技术。在许多领域中&#xff0c;如医疗诊断、金融风险评估和自动驾驶等&#xff0c;解释模型…

【沐风老师】3DMAX自动材质插件使用方法教程

3DMAX自动材质插件使用方法教程 3DMAX自动材质工具用于在将纹理加载到3dsax中时快速创建简单的材质&#xff0c;并具有一些很酷的材质功能。 这个插件可以根据真正制造商的纹理&#xff08;通常比例为2:1&#xff09;快速创建简单的木材材质&#xff0c;并根据板材的长度自动对…