from PIL import Image, ImageDraw # Подключим необходимые библиотеки.
image = Image.open("temp.jpg") # Открываем изображение.
width = image.size[0] # Определяем исходную ширину.
height = image.size[1] # Определяем исходную высоту.
pix = image.load() # Выгружаем значения пикселей исходной картинки.
imagemode = image.mode # Получаем цветовой формат исходного изображения
multiplicator = 2 # тут множитель, по-умолчанию 2
newwidth = width * multiplicator # вычисляем новую высоту
newheight = height * multiplicator # вычисляем новую ширину
newimage = Image.new(mode=imagemode, size=(newwidth, newheight)) # создаем новую картинку
newpix = newimage.load() # загружаем новую картинку попиксельно
draw = ImageDraw.Draw(newimage) # создаем инструмент рисования
if __name__ == '__main__':
new_image_list = [] # создаем пустой массив строк нового изображения
for i in range(width):
new_line_list = [] # создаем пустой массив очередной новой строки
for j in range(height): # получаем цветность очередного пикселя исходной картинки
newpixel = pix[i, j]
for _ in range(multiplicator): # лепим в конец массива новой строки нужное кол-во таких пикселей
new_line_list.append(newpixel)
for _ in range(multiplicator): # лепим в конец массива строк нужное кол-во вновь созданных строк
new_image_list.append(new_line_list)
for i in range(newwidth): # рисуем построчно попиксельно новую картинку из массива строк нового изображения
for j in range(newheight):
pixel = tuple(new_image_list[i][j])
draw.point((i, j), pixel)
newimage.save("ans.bmp", "BMP") # записываем всё это в файл (выбрал bitmap потому, что там явно получаются пиксели
# как заказано, без дальнейшей оптимизации форматом jpg
del draw
image.close()
newimage.close()