Как заменить пиксели в картинке через python?

Рейтинг: 0Ответов: 2Опубликовано: 26.01.2023

Как заменить каждый 2-й пиксель в картинке на прозрачный? Смог разбить картинку через numpy но как заменить каждое второе значение не разобрался

Ответы

▲ 2Принят

Для прозрачности нужно RGBA, чтобы записать альфа-канал и сохранять лучше в формате, что поддерживает прозрачность (jpg не подойдет)

ℹ️ В коде 0, 0, 0, 0 это и есть R, G, B, A. Значение A = 255 - пиксель непрозрачен, а 0 - прозрачный

Пример:

from PIL import Image


file_name = "путь до картинки"

img = Image.open(file_name).convert('RGBA')
pixels = img.load()
width, height = img.size

for i in range(width):
    for j in range(height):
        if (j + i) % 2 == 0:
            pixels[i, j] = 0, 0, 0, 0

img.save("output.png")

Загружал input.jpg:

введите сюда описание изображения

Результат:

введите сюда описание изображения

▲ 1

Данную задачу можно решить с помощью библиотеки PIL. Код максимально тривиальный. Открываем нашу картинку, получаем список со всеми пикселями, пробегаемся по каждому второму пикселю и меняем его значение на (255, 255, 255), то есть на белый цвет.

from PIL import Image

im = Image.open("name.jpg")
pixels = im.load()  # список с пикселями
x, y = im.size  # ширина (x) и высота (y) изображения

for i in range(x):
    for j in range(y):
        if (j + i) % 2 == 0:
            pixels[i, j] = 255, 255, 255
im.save("new.jpg")

Правда не совсем понятно что имеете ввиду под "каждый 2-й пиксель", но это вы уже сами можете изменить условие в if.