【教学类-83-03】20241218立体书盘旋蛇3.0——圆点蛇1(蚊香形)

news2024/12/19 15:41:52

背景需求:

制作儿童简易立体书贺卡

【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形嘴)-CSDN博客文章浏览阅读1k次,点赞24次,收藏18次。【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形嘴)https://blog.csdn.net/reasonsummer/article/details/143987230【教学类-83-02】20241214立体书三角嘴2.0——青蛙(扁菱形嘴)-CSDN博客文章浏览阅读672次,点赞30次,收藏14次。【教学类-83-02】20241214立体书三角嘴2.0——青蛙(长扁菱形)https://blog.csdn.net/reasonsummer/article/details/144510078

2025年是蛇年,制作一款立体书盘旋蛇

网上下载蚊香图

PS修图

蛇身体正面,添加图案和黏贴位置

变透明色PNG

蛇身体反面,水平翻转透明

去掉白边最大化,保留黑线和透明部分,然后统一大小(PS可能两图会有细微高度差异)

# 
'''
小蛇。去边,(保留黑线和透明部分)
星火讯飞、阿夏
20240817
'''

import os
from PIL import Image
import logging

# 配置日志记录
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

path = r'D:\20241122青蛙小鸡\03小蛇'
folder_path = os.path.join(path, '00修图')
output_folder = os.path.join(path, '01切边图')
os.makedirs(output_folder, exist_ok=True)

# 留一点白边
white_edge = 0  # 设置一个合适的白边值,例如10像素

def find_non_white_pixel(image):
    width, height = image.size
    left, right, top, bottom = width, 0, height, 0

    for y in range(height):
        for x in range(width):
            r, g, b, a = image.getpixel((x, y))[:4]  # 确保只取前四个值
            if r != 255 or g != 255 or b != 255 :
                if x < left:
                    left = x
                if x > right:
                    right = x
                if y < top:
                    top = y
                if y > bottom:
                    bottom = y

    return left, right, top, bottom

def crop_image(image, left, right, top, bottom):
    # 确保裁剪区域不超出图像边界
    left = max(0, left - white_edge)
    right = min(image.width - 1, right + white_edge)
    top = max(0, top - white_edge)
    bottom = min(image.height - 1, bottom + white_edge)
    return image.crop((left, top, right, bottom))

for file_name in os.listdir(folder_path):
    if file_name.endswith(".png"):
        input_path = os.path.join(folder_path, file_name)
        try:
            with Image.open(input_path).convert('RGBA') as image:  # 确保图像以RGBA模式打开
                left, right, top, bottom = find_non_white_pixel(image)
                cropped_image = crop_image(image, left, right, top, bottom)
                output_path = os.path.join(output_folder, file_name)
                cropped_image.save(output_path)
                logging.info(f"Processed {file_name} successfully.")
        except Exception as e:
            logging.error(f"Failed to process {file_name}: {e}")

# 提取最大宽度的那张图片的尺寸
def get_max_width_and_height(fold_path):
    max_width = 0
    max_height = 0

    for file_name in os.listdir(fold_path):
        if file_name.endswith(".png") or file_name.endswith(".jpg") or file_name.endswith(".jpeg"):
            file_path = os.path.join(fold_path, file_name)
            img = Image.open(file_path)
            width, height = img.size
            if width > max_width:
                max_width = width
                max_height = height

    return max_width, max_height

fold_path = output_folder
max_width, max_height = get_max_width_and_height(fold_path)
print("最大宽度:", max_width)
print("最大高度:", max_height)
# 最大宽度: 769
# 最大高度: 803

# 自定义长宽
# 统一所有图片大小
def resize_image(image_path, output_folder, new_image_name):
    img = Image.open(image_path).convert('RGBA')
    new_img = Image.new('RGBA', (max_width, max_height), (255, 255, 255, 0))  # 创建一个全透明的背景
    new_img.paste(img, (0, 0), img)  # 粘贴原图到新图上,保持透明部分
    new_img.save(os.path.join(output_folder, new_image_name))

for file in os.listdir(output_folder):
    if file.endswith('.png'):
        input_image_path = os.path.join(output_folder, file)
        new_image_name = f"{file[:-4]}.png"  # 避免覆盖原文件
        resize_image(input_image_path, output_folder, new_image_name)
# ```

# ### 主要改动点:
# 1. **确保裁剪区域不超出图像边界**:在`crop_image`函数中添加了对裁剪区域的边界检查,确保不会超出图像的实际尺寸。
# 2. **日志信息**:增加了更多的日志信息,以便更好地调试和跟踪处理过程。
# 3. **避免覆盖原文件**:在重命名重设大小的图片时,使用不同的文件名以避免覆盖原文件。

二、制作斑点纹理

本来我希望用AI生成蛇的花纹图案,但是画了半天,并没有适合的圆形、线条纹样,所以我还是想用AI制作花纹图纸。

# 制作小蛇的斑点-行列(单独测试))
# 星火讯飞,阿夏
# 2024年12月18日

from PIL import Image, ImageDraw
import math

# 画布尺寸
canvas_size = (769,803)
# 用户输入的圆的数量和间距
num_circles_per_row = 10
# int(input("请输入每行圆的数量: "))
num_circles_per_col = 11
# int(input("请输入每列圆的数量: "))
spacing = 5
# int(input("请输入圆的间距: "))

width, height = canvas_size

# 计算最大可能的直径
max_diameter = min((width - (num_circles_per_row - 1) * spacing) // num_circles_per_row,
                   (height - (num_circles_per_col - 1) * spacing) // num_circles_per_col)

print(f"最大直径: {max_diameter}")
# 圆圈线条宽度
w=5

# 创建一个白色背景的图像
image = Image.new('RGB', canvas_size, 'white')
draw = ImageDraw.Draw(image)

# 计算起始位置,使圆在画布中居中
start_x = (canvas_size[0] - (num_circles_per_row * max_diameter + (num_circles_per_row - 1) * spacing)) // 2
start_y = (canvas_size[1] - (num_circles_per_col * max_diameter + (num_circles_per_col - 1) * spacing)) // 2

# 绘制圆形
for i in range(num_circles_per_row):
    for j in range(num_circles_per_col):
        x = start_x + i * (max_diameter + spacing)
        y = start_y + j * (max_diameter + spacing)
        draw.ellipse([(x, y), (x + max_diameter, y + max_diameter)], outline='black', width=w)

path = r'D:\20241122青蛙小鸡\03小蛇'
# 保存图像
image.save(path + r'\123.png')


# 这个脚本会逐步增加间距,直到每行和每列的圆的数量都至少为10个。最终的间距、每行和每列的圆的数量以及总圆的数量都会打印出来。

感觉花纹黑色与蛇的黑色很相近,我想把花纹圆形变成灰色的

做一个参数遍历(颜色改成lightgray浅灰)

# 制作小蛇的斑点-行列(遍历测试)
# 星火讯飞,阿夏
# 2024年12月18日

from PIL import Image, ImageDraw
import math,os


# (单独测试))
# # 用户输入的圆的数量和间距
# num_circles_per_row = 10
# # int(input("请输入每行圆的数量: "))
# num_circles_per_col = 11
# # int(input("请输入每列圆的数量: "))
# spacing = 5
# # int(input("请输入圆的间距: "))

# 遍历测试
for num_circles_per_row in range(5,20):
    num_circles_per_col =num_circles_per_row    # 行5个,列也是5个
    for spacing in  range(5,50,5):
                # 画布尺寸
        canvas_size = (769,803)
        width, height = canvas_size

        # 计算最大可能的直径
        max_diameter = min((width - (num_circles_per_row - 1) * spacing) // num_circles_per_row,
                        (height - (num_circles_per_col - 1) * spacing) // num_circles_per_col)

        print(f"最大直径: {max_diameter}")
        # 圆圈线条宽度
        w=5

        # 创建一个白色背景的图像
        image = Image.new('RGB', canvas_size, 'white')
        draw = ImageDraw.Draw(image)

        # 计算起始位置,使圆在画布中居中
        start_x = (canvas_size[0] - (num_circles_per_row * max_diameter + (num_circles_per_row - 1) * spacing)) // 2
        start_y = (canvas_size[1] - (num_circles_per_col * max_diameter + (num_circles_per_col - 1) * spacing)) // 2

        # 绘制圆形
        for i in range(num_circles_per_row):
            for j in range(num_circles_per_col):
                x = start_x + i * (max_diameter + spacing)
                y = start_y + j * (max_diameter + spacing)
                draw.ellipse([(x, y), (x + max_diameter, y + max_diameter)], outline='lightgray', width=w)

        path = r'D:\20241122青蛙小鸡\03小蛇'
        t_folder=path+r'\02圆点图'
        os.makedirs(t_folder,exist_ok=True)
        # 保存图像
        image.save(t_folder + fr'\行{num_circles_per_row}_列{num_circles_per_col}_行距{spacing}.png')

然后制作左右对称两图


'''
 
# 目的:小蛇的两张图与点子拼图(正反图)
# 作者:阿夏
# 时间:2024年12月18日17:27

'''

from PIL import Image
import os

# 定义路径
path = r'D:\20241122青蛙小鸡\03小蛇'
folder1 = path + r'\01切边图'
folder2 = path + r'\02圆点图'
c=['正','反']
for i in range(len(c)):
    folder3 = path + fr'\03小蛇合并图{c[i]}面'

    # 确保输出文件夹存在
    os.makedirs(folder3, exist_ok=True)

    # 从folder1读取第一张图片
    first_image_path = os.path.join(folder1, os.listdir(folder1)[i])
    first_image = Image.open(first_image_path).convert("RGBA")

    # 获取第一张图片的中心点
    width, height = first_image.size
    center_x, center_y = width // 2, height // 2

    # 遍历folder2中的每张图片
    for image_name in os.listdir(folder2):
        second_image_path = os.path.join(folder2, image_name)
        second_image = Image.open(second_image_path).convert("RGBA")
        
        # 创建一个足够大的新空白图像来容纳两张图片
        new_width = max(width, second_image.width)
        new_height = max(height, second_image.height)
        combined_image = Image.new('RGBA', (new_width, new_height))
        
        # 将第二张图片粘贴到新图像的中心
        combined_image.paste(second_image, ((new_width - second_image.width) // 2, (new_height - second_image.height) // 2), mask=second_image)
        
        # 使用其alpha通道作为掩码,将第一张图片粘贴到新图像的中心
        combined_image.paste(first_image, ((new_width - width) // 2, (new_height - height) // 2), mask=first_image)
        
        # 将组合后的图像保存到folder3
        combined_image.save(os.path.join(folder3, f"{image_name}"))

    print("Images have been combined and saved to folder3.")



    # # 移动到一起

    # # Python,读取123文件下所有子文件夹里面的图片,合并在234文件内,如果有重名的,在文件名后面添加数字(递增)
    # import os
    # import shutil

    # # 源目录和目标目录

    # folder5 = folder3+fr'\02合并'

    # # 确保目标目录存在
    # if not os.path.exists(folder5):
    #     os.makedirs(folder5)

    # # 遍历源目录下的所有子目录和文件
    # for root, dirs, files in os.walk(folder3):
    #     for file in files:
    #         # 检查文件是否为图片
    #         if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
    #             src_file_path = os.path.join(root, file)
    #             dest_file_path = os.path.join(folder5, file)
                
    #             # 如果目标文件已存在,添加数字后缀
    #             counter = 1
    #             while os.path.exists(dest_file_path):
    #                 name, ext = os.path.splitext(file)
    #                 new_file_name = f"{name}_{counter:03}{ext}"
    #                 dest_file_path = os.path.join(folder5, new_file_name)
    #                 counter += 1
                
    #             # 复制文件到目标目录
    #             # shutil.copy2(src_file_path, dest_file_path)
    #             # 剪切移动文件到目标目录
    #             shutil.move(src_file_path, dest_file_path)

                
    #             print(f"Copied {src_file_path} to {dest_file_path}")


    # shutil.rmtree(folder3 +fr'\01分类')

超过15个点子,间距大于35就会让点子变得很小。没法点子涂色。所以把,圆点数量改成5个到14个(原来是5-19个)

这下只有90图

第1次,正图

第2次,正图

正面图布局一样.

第1次,反面图(与正面图相同)

第2次,反面图(正面图左右翻转)

因为是圆形,而且圆点图本身就是中心点对撑,

所以第二套图片的圆点是否水平翻转都不明显(如果是其他的图非对称图案,需要考虑水平翻转。)

为了能够拉长,动物进行了290度旋转

再用PS提取两图中的灰色,反选填充白色,把黏贴底位置左右翻转

最后一步图片拼合

WORD模版

初步效果

代码展示

# '''
# 蛇身体、蛇背景打包PDF
# 作者:阿夏
# 时间:2024年12月18日17:27
# '''

import os
import time
import shutil
from docx import Document
from docx.shared import Cm, Pt, Inches, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from PyPDF2 import PdfFileMerger, PdfFileReader
from docxtpl import DocxTemplate
import pandas as pd
import os,random
from docx import Document
from docx.shared import Cm
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
import time
from PIL import Image

print('----------第1步:提取所有的幼儿照片的路径------------')

# 读取123文件夹下的所有图片
path = r'D:\20241122青蛙小鸡'
path1=path+r'\03小蛇'


folder1= os.path.join(path1, '03小蛇合并图反面')  # 封面
folder2= os.path.join(path1, '03小蛇合并图正面')  # 青蛙与池塘合并图
folder3= os.path.join(path1, '04黏贴位置')  # 封面


folder_files1 = [os.path.join(folder1, f) for f in os.listdir(folder1) if f.endswith('.jpg') or f.endswith('.png')]
folder_files2 = [os.path.join(folder2, f) for f in os.listdir(folder2) if f.endswith('.jpg') or f.endswith('.png')]
folder_files3 = [os.path.join(folder3, f) for f in os.listdir(folder3) if f.endswith('.jpg') or f.endswith('.png')]

# folder_files = random.sample(folder_files, len(folder_files))
# print(folder_files)

# 创建临时文件夹
new_folder = path+r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)

# print('----------第3步:一张大茶壶,2个小茶杯 ------------')

for nn in range(0,int(len(folder_files1))):      # 读取图片的全路径  的数量 31张
    doc = Document(path+r'\立体书盘旋蛇.docx')

    table = doc.tables[0]          # 4567(8)行

    f1=folder_files1[nn]           # 封面的图片

    # # 读取图片并垂直翻转
    # image = Image.open(face)
    # flipped_image = image.transpose(Image.FLIP_TOP_BOTTOM)  # 垂直翻转

    # # 保存翻转后的图片到临时文件
    # temp_image_path = path + r'\temp_image.png'
    # flipped_image.save(temp_image_path)

    # 写入1张小图封面
    run = doc.tables[0].cell(0, 0).paragraphs[0].add_run()  # 图片位置 第一个表格的0 3 插入照片
    run.add_picture(r'{}'.format(f1), width=Cm(9.8))# 以宽度为标准,确定高度,图片宽度(人工宽度,图案小一点,可以写文字)
    table.cell(0, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中

    f2=folder_files2[nn]           # 青蛙的图片   

    # 写入1张大图-青蛙
    run = doc.tables[0].cell(0,1).paragraphs[0].add_run()  # 图片位置 第一个表格的0 3 插入照片
    run.add_picture(r'{}'.format(f2), height=Cm(9.8))    # 图片高度(单元格高度)因为青蛙与背景合并成最大了,就用最高尺寸
    table.cell(0,1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中

    f3=folder_files3[0]
    # 写入1张大图-青蛙
    run = doc.tables[0].cell(1,0).paragraphs[0].add_run()  # 图片位置 第一个表格的0 3 插入照片
    run.add_picture(r'{}'.format(f3), height=Cm(9.8))    # 图片高度(单元格高度)因为青蛙与背景合并成最大了,就用最高尺寸
    table.cell(1, 0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中

    f4=folder_files3[1]
    # 写入1张大图-青蛙
    run = doc.tables[0].cell(1,1).paragraphs[0].add_run()  # 图片位置 第一个表格的0 3 插入照片
    run.add_picture(r'{}'.format(f4), height=Cm(9.8))    # 图片高度(单元格高度)因为青蛙与背景合并成最大了,就用最高尺寸
    table.cell(1, 1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中


    doc.save(new_folder+fr'\{nn:03d}.docx')   
    time.sleep(3)
    
print('----------第4步:把都有PDF合并为一个打印用PDF------------')

# 将10个docx转为PDF
import os
from docx2pdf import convert
from PyPDF2 import PdfFileMerger

pdf_output_path = path+fr"\盘旋蛇立体书封面({len(folder_files1)}人共{len(folder_files1)}份).pdf"

# 将所有DOCX文件转换为PDF
for docx_file in os.listdir(new_folder):
    if docx_file.endswith('.docx'):
        docx_path = os.path.join(new_folder, docx_file)
        convert(docx_path, docx_path.replace('.docx', '.pdf'))


# 合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(new_folder):
    if pdf_file.endswith('.pdf'):
        pdf_path = os.path.join(new_folder, pdf_file)
        merger.append(pdf_path)
time.sleep(2)

# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()

# 删除输出文件夹
shutil.rmtree(new_folder)
time.sleep(10)

    

 

第一款矩阵圆形的盘旋蛇就做好了,这一款主要用的图案是行列的空心圆

先打印测试能不能使用

制作封面小蛇(虽然图纸上看不到)

纯白色背景,卡通简笔画,蛇,正面,可爱,萌,涂色书,简单笔画,卡通,黑白轮廓线,黑白轮廓线、黑白轮廓线、未着色,幼儿插图,线条画,没有背景,没有颜色,黑白漫画线条艺术:,线描,空背景,粗轮廓,清晰的线条,矢量线。简单,大,

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

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

相关文章

监控视频汇聚融合云平台一站式解决视频资源管理痛点

随着5G技术的广泛应用&#xff0c;各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据&#xff0c;并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而&#xff0c;随着数字化建设和生产经营管理活动的长期开展&#xff0…

JAVA 零拷贝技术和主流中间件零拷贝技术应用

目录 介绍Java代码里面有哪些零拷贝技术java 中文件读写方式主要分为什么是FileChannelmmap实现sendfile实现 文件IO实战需求代码编写实战IOTest.java 文件上传阿里云&#xff0c;测试运行代码看耗时为啥带buffer的IO比普通IO性能高&#xff1f;BufferedInputStream为啥性能高点…

云灾备技术

目录 云灾备分类与定义 云容灾定义与主要应用场景 云容灾定义 应用场景 云备份定义与主要应用场景 云备份定义 应用场景 云容灾参考模型与关键技术 云备份参考模型与关键技术 云灾备分类与定义 云容灾技术是指保护云数据中心业务持续性的灾备技术&#xff0c;它是云灾…

进程通信方式---共享映射区(无血缘关系用的)

5.共享映射区&#xff08;无血缘关系用的&#xff09; 文章目录 5.共享映射区&#xff08;无血缘关系用的&#xff09;1.概述2.mmap&&munmap函数3.mmap注意事项4.mmap实现进程通信父子进程练习 无血缘关系 5.mmap匿名映射区 1.概述 原理&#xff1a;共享映射区是将文件…

leetcode 面试经典 150 题:长度最小的子数组

链接长度最小的子数组题序号209题型数组解题方法滑动窗口难度中等 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件…

代码随想录day22 | 回溯算法理论基础 leetcode 77.组合 77.组合 加剪枝操作 216.组合总和III 17.电话号码的字母组合

DAY22 回溯算法开始 学到目前最烧脑的一天 回溯算法理论基础 任何回溯算法都可以抽象成一个树结构 理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。 在二叉树系列中&#xff0c;我们已经不止一次&#xff0c;提到了回溯 回溯是递归的副…

画一颗随机数

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>codePen - Random Tree</title> </head> <body><canvas></canvas><script>const canvas doc…

牛客周赛 Round 72 题解

本次牛客最后一个线段树之前我也没碰到过&#xff0c;等后续复习到线段树再把那个题当例题发出来 小红的01串&#xff08;一&#xff09; 思路&#xff1a;正常模拟&#xff0c;从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…

[x86 ubuntu22.04]投影模式选择“只使用外部”,外部edp屏幕无背光

1 问题描述 CPU&#xff1a;G6900E OS&#xff1a;ubuntu22.04 Kernel&#xff1a;6.8.0-49-generic 系统下有两个一样的 edp 屏幕&#xff0c;投影模式选择“只使用外部”&#xff0c;内部 edp 屏幕灭&#xff0c;外部 edp 屏幕无背光。DP-1 是外部 edp 屏幕&#xff0c;eDP-1…

清理C盘小记

突然C盘就爆满了&#xff0c;想当初还是给他预留了120G的空间&#xff0c;感觉到现在也不够用了&#xff0c;担心出现死机的情况就赶紧进行了清理。有一说一&#xff0c;清理回收站是真的有用。 参考&#xff1a;C盘清理指南&#xff0c;清理出30G起&#xff0c;超详细总结&am…

Docker:Docker Compose(补充三)

Docker&#xff1a;Docker Compose 1. Docker Compose 批量管理容器的工具 1. Docker Compose 批量管理容器的工具 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用服务&#xff0c;它允许用户编排、组合和配置多个容器的部署…

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受&#xff0c;这篇论文整体看下来&#xff0c;没有太多惊艳的地方。核心就是利用知识图谱&#xff0c;通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…

Visual studio的AI插件-通义灵码

通义灵码 TONGYI Lingma 兼容 Visual Studio、Visual Studio Code、JetBrains IDEs 等主流 IDE&#xff1b;支持 Java、Python、Go、C/C、C#、JavaScript、TypeScript、PHP、Ruby、Rust、Scala 等主流编程语言。 安装 打开扩展管理器&#xff0c;搜送“TONGYI Lingma”&…

shutil 文件拷贝copy - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

attack xv6

思路 被这个实验折磨了两天&#xff0c;可能是2024新出的一个实验内容&#xff0c;网上资料少&#xff0c;参考了一篇仅有的博客&#xff0c;吭哧吭哧分析出来了个大概吧…在此记录一下&#xff0c;以便帮助有需要的人。 attack xv6的ans只有几行代码&#xff0c;根据实验描述…

Flink CDC实时同步mysql数据

官方参考资料&#xff1a; https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/mysql-cdc/ Apache Flink 的 Change Data Capture (CDC) 是一种用于捕获数据库变化&#xff08;如插入、更新和删除操作&#xff09;的技术。Flink CDC…

eclipse 如何设置项目、不同类型文件的 utf8 编码

编码问题一直是软件开发中让人头疼的小细节&#xff0c;尤其是团队协作中&#xff0c;若编码格式不统一&#xff0c;乱码问题便会频繁出现。那么如何在 Eclipse 中统一设置项目和文件的 UTF-8 编码&#xff0c;避免因编码问题造成不必要的困扰呢&#xff1f;今天&#xff0c;我…

Unity中触发器Trigger无法被射线检测到的问题

今天在做项目的时候发现,同一个物体,当他是碰撞器的时候,可以被射线检测到. 但是当他变成触发器的时候,射线就检测不到了??? 本来以为就是这样的,但是查了资料发现并没有这样的限制,触发器也是可以正常被射线检测的 到处查资料都没有发现问题,后来发现是下面这个设置不知道…

第一个AJAX调用XMLHttpRequest

第一个AJAX调用XMLHttpRequest 创建对象&#xff0c;用于浏览器和服务器的通信&#xff0c;不需要刷新浏览器 const request new XMLHttpRequest();通过GET请求方式在API中请求数据 request.open(GET, https://restcountries.com/v3.1/name/Russia);注&#xff1a;我这里的…