이 문서의 내용은 Python에서 이미지 픽셀화를 구현하는 코드 예제에 관한 것입니다. 특정 참조 값이 있으므로 도움이 될 수 있습니다.
Cause
인터넷에서 픽셀 그림을 보고 꽤 흥미로워서 Python에서 PIL 라이브러리를 사용하여 하나 작성하려고 했습니다.
구현 아이디어
그림을 여러 블록으로 나누고, 각 블록의 색상은 아래와 같이 해당 색상 블록에서 가장 많은 색상을 포함하는 색상과 동일합니다.
이 사진은 블록 크기로 2×2 픽셀을 사용하고, 블록의 색상과 사전의 각 색상의 발생 횟수를 저장하고, 가장 큰 색상을 가져와 전체 블록을 채웁니다.
특정 구현
from PIL import Image def init(): # 设置每个像素区块的大小 block_size = 75 img = Image.open("a.jpg") # 获取图片的宽高 width, height = img.size # 获取像素点对应RGB颜色值,可以改变img_array中的值来改变颜色值 img_array = img.load() # 为了处理最后的区块,加了一次循环 max_width = width + block_size max_height = height + block_size for x in range(block_size - 1, max_width, block_size): for y in range(block_size - 1, max_height, block_size): # 如果是最后一次循环,则x坐标等于width - 1 if x == max_width - max_width % block_size - 1: x = width - 1 # 如果是最后一次循环,则x坐标等于height - 1 if y == max_height - max_height % block_size - 1: y = height - 1 # 改变每个区块的颜色值 change_block(x, y, block_size, img_array) y += block_size x += block_size img.save(r'D:\python\pixel_image\awesome_copy.png') img.show() """ :param x坐标 x: :param y坐标 y: :param 区块大小 black_size: :param 可操作图片数组 img_array: """ def change_block(x, y, black_size, img_array): color_dist = {} block_pos_list = [] for pos_x in range(-black_size + 1, 1): for pos_y in range(-black_size + 1, 1): # todo print(x + pos_x,y + pos_y) block_pos_list.append([x + pos_x, y + pos_y]) for pixel in block_pos_list: if not str(img_array[pixel[0], pixel[1]]) in color_dist.keys(): color_dist[str(img_array[pixel[0], pixel[1]])] = 1 else: color_dist[str(img_array[pixel[0], pixel[1]])] += 1 # key-->value => value-->key new_dict = {v: k for k, v in color_dist.items()} max_color = new_dict[max(color_dist.values())] # 将区块内所有的颜色值设置为颜色最多的颜色 for a in block_pos_list: img_array[a[0], a[1]] = tuple(list(map(int, max_color[1:len(max_color) - 1].split(",")))) def get_key(dict, value): return [k for k, v in dict.items() if v == value] if __name__ == "__main__": init()
효과 비교
요약
오픈 소스 주소https://github.com/MasakiOvO/...
많습니다 개선 사항 색상 값을 얻기 위한 알고리즘과 같은 일부 영역에서는 더 나은 솔루션이 있어야 하며, 이는 여러 프로세스를 사용하여 구현되어야 프로그램 속도가 훨씬 빨라집니다.
위 내용은 이미지 픽셀화를 구현하는 Python 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!