From 9eb6b25e2a536cd90235d61559b39895e01b5aa5 Mon Sep 17 00:00:00 2001 From: changjiaxiang Date: Tue, 30 Jul 2024 18:13:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=83=8F=E7=B4=A0=E5=87=BD=E6=95=B0=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 33 +-------------------------------- pixel.py | 32 +++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/__init__.py b/__init__.py index dc9fed1..59051af 100644 --- a/__init__.py +++ b/__init__.py @@ -1508,41 +1508,10 @@ class ToPixel: FUNCTION = "image_to_pixel" def image_to_pixel(self, original_image, threshold, pix, tile_size, color_card=None): - - regular_size = tile_size*pix - original_image = tensorToImg(original_image) - - original_pixels = regular_image(original_image,output_size=(regular_size,regular_size)) - - # 创建新的图像,用于存储像素化的结果 - pixelated_image = Image.new('RGB', (pix, pix)) - if color_card!=None: color_card = tensorToImg(color_card) - color_palette = load_color_card(color_card) - # 遍历每个8x8的方块 - for i in range(0, regular_size, tile_size): - for j in range(0, regular_size, tile_size): - # 获取当前方块 - block = original_pixels[i:i+tile_size, j:j+tile_size].reshape(-1, 3) - # 找到主要颜色 - dominant_color = find_dominant_color(block, threshold) - # 匹配到颜色卡中的颜色 - matched_color = match_color_to_palette(dominant_color, color_palette) - # 将匹配的颜色赋给对应的像素点 - pixelated_image.putpixel((j // tile_size, i // tile_size), matched_color) - else: - # 遍历每个8x8的方块 - for i in range(0, regular_size, tile_size): - for j in range(0, regular_size, tile_size): - # 获取当前方块 - block = original_pixels[i:i+tile_size, j:j+tile_size].reshape(-1, 3) - # 找到主要颜色 - dominant_color = find_dominant_color(block, threshold) - # 将主要颜色的平均值赋给对应的像素点 - pixelated_image.putpixel((j // tile_size, i // tile_size), tuple(dominant_color.astype(int))) - + pixelated_image = to_pixel(original_image, threshold, pix, tile_size, color_card) pixelated_image = imgToTensor(pixelated_image) garbage_collect() return (pixelated_image,) diff --git a/pixel.py b/pixel.py index 9ac6d15..e80ec99 100644 --- a/pixel.py +++ b/pixel.py @@ -58,4 +58,34 @@ def regular_image(original_image, output_size=(512, 512), fill_color=(255, 255, new_img.paste(original_image, (left, top)) original_pixels = np.array(new_img) - return original_pixels \ No newline at end of file + return original_pixels + +def to_pixel(original_image, threshold, pix, tile_size, color_card=None): + regular_size = tile_size*pix + original_pixels = regular_image(original_image,output_size=(regular_size,regular_size)) + # 创建新的图像,用于存储像素化的结果 + pixelated_image = Image.new('RGB', (pix, pix)) + if color_card!=None: + color_palette = load_color_card(color_card) + # 遍历每个8x8的方块 + for i in range(0, regular_size, tile_size): + for j in range(0, regular_size, tile_size): + # 获取当前方块 + block = original_pixels[i:i+tile_size, j:j+tile_size].reshape(-1, 3) + # 找到主要颜色 + dominant_color = find_dominant_color(block, threshold) + # 匹配到颜色卡中的颜色 + matched_color = match_color_to_palette(dominant_color, color_palette) + # 将匹配的颜色赋给对应的像素点 + pixelated_image.putpixel((j // tile_size, i // tile_size), matched_color) + else: + # 遍历每个8x8的方块 + for i in range(0, regular_size, tile_size): + for j in range(0, regular_size, tile_size): + # 获取当前方块 + block = original_pixels[i:i+tile_size, j:j+tile_size].reshape(-1, 3) + # 找到主要颜色 + dominant_color = find_dominant_color(block, threshold) + # 将主要颜色的平均值赋给对应的像素点 + pixelated_image.putpixel((j // tile_size, i // tile_size), tuple(dominant_color.astype(int))) + return pixelated_image \ No newline at end of file