今回はプログラミング言語の「Python」を使って作成しました。
下記の本の「モザイクのサンプル」を改造しました。
■ プログラム
import sys
import pygame
from pygame.locals import QUIT
pygame.init()
displayXY = 250
SURFACE = pygame.display.set_mode((displayXY, displayXY))
FPSCLOCK = pygame.time.Clock()
rectangle = 250
def process_pixels(src_data, dst_data):
""" process pixels """
for ypos in range(0, displayXY, rectangle):
for xpos in range(0, displayXY, rectangle):
r_total, g_total, b_total = 0, 0, 0
for y_offset in range(ypos, ypos+rectangle):
for x_offset in range(xpos, xpos+rectangle):
val = src_data[x_offset][y_offset]
rval, gval, bval, _ = SURFACE.unmap_rgb(val)
r_total += rval
g_total += gval
b_total += bval
rectangle_02 = rectangle * rectangle
rval = int(r_total / rectangle_02)
gval = int(g_total / rectangle_02)
bval = int(b_total / rectangle_02)
for y_offset in range(ypos, ypos+rectangle):
for x_offset in range(xpos, xpos+rectangle):
dst_data[x_offset][y_offset] = (rval, gval, bval)
def main():
global rectangle
""" main routine """
src = pygame.image.load("picture0.jpg").convert()
dst = pygame.Surface((displayXY, displayXY))
while True:
for _ in pygame.event.get(QUIT):
pygame.quit()
sys.exit()
if pygame.time.get_ticks() >= 1000 and pygame.time.get_ticks() < 2000:
rectangle = 250
elif pygame.time.get_ticks() >= 2000 and pygame.time.get_ticks() < 3000:
rectangle = 125
elif pygame.time.get_ticks() >= 3000 and pygame.time.get_ticks() < 4000:
rectangle = 50
elif pygame.time.get_ticks() >= 4000 and pygame.time.get_ticks() < 5000:
rectangle = 25
elif pygame.time.get_ticks() >= 5000 and pygame.time.get_ticks() < 6000:
rectangle = 10
elif pygame.time.get_ticks() >= 6000 and pygame.time.get_ticks() < 7000:
rectangle = 5
elif pygame.time.get_ticks() >= 7000 and pygame.time.get_ticks() < 8000:
rectangle = 2
elif pygame.time.get_ticks() >= 8000:
rectangle = 1
SURFACE.blit(dst, (0, 0))
src_data = pygame.PixelArray(src)
dst_data = pygame.PixelArray(dst)
process_pixels(src_data, dst_data)
del src_data
del dst_data
pygame.display.update()
FPSCLOCK.tick(5)
if __name__ == '__main__':
main()
■ 参考書
「Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing))」
■ ゲーム用ライブラリ
「Pygame」
■ プログラミング言語
「Python」