from PIL import Image # solved sudoku sudoku = ''' 964127538 712385694 385496712 491578263 238614975 576239841 627843159 153962487 849751326 ''' s = sudoku.replace('\n', '') image = Image.open('image.png').convert('RGB') out = Image.new('RGB', image.size) for j in range(9): for i in range(9): img_cell = image.crop((i * 50, j * 50, i * 50 + 50, j * 50 + 50)) c = (int(s[j * 9 + i]) - 1) * 50 out.paste(img_cell, (c, j * 50)) out.save('out_image.png')