Как изменить цвета изображения с помощью программирования JES?
Моя цель состоит в том, чтобы удвоить размер изображения, затем изменить левую половину на оттенки серого, а затем изменить значение зеленого цвета в верхней правой половине и значение синего цвета в нижней правой половине. У меня есть значения, которые я нашел в своем учебнике для оттенков серого, но я не уверен, что это то, что я на самом деле использую. И я также не уверен, запрограммирую ли я каждое из этих различных значений, используя циклы for или просто что-то другое
Пока что мой код:
def crazyPic(newGreen,newBlue,pic,file):
show(pic)
newPic = makeEmptyPicture(getWidth(pic)*2,getHeight((pic)*2
for x in range(width):
for y in range(height):
for px in getPixel(pic,0,100):
nRed = getRed(px) * 0.299
nGreen = getGreen(px) * 0.587
nBlue = getBlue(px) * 0.114
luminance = nRed + nGreen + nBlue
setColor(px,makeColor(luminance,luminance,luminance)
1 ответ
Я не должен давать полные ответы, так как JES - это приложение, разработанное для студентов, но я думаю, что через три месяца можно дать полный рабочий образец, который можно использовать в качестве справочного материала для остальных...
Это должно быть близко к тому, что вы пытались сделать:
Примечание: ваш подход простой двойной петли над x и y был правильным.
def crazyPic(pic, newRed, newGreen, newBlue):
w = getWidth(pic)
h = getHeight(pic)
new_w = w * 2
new_h = h * 2
newPic = makeEmptyPicture(w * 2, h * 2)
for x in range(new_w):
for y in range(new_h):
new_px = getPixel(newPic, x, y)
# Top-left: B&W
if (x < w) and (y < h):
px = getPixel(pic, x, y)
nRed = getRed(px) * newRed #0.299
nGreen = getGreen(px) * newGreen #0.587
nBlue = getBlue(px) * newBlue #0.114
luminance = nRed + nGreen + nBlue
new_col = makeColor(luminance, luminance, luminance)
# Top-right
elif (y < h):
px = getPixel(pic, x - w, y)
nRed = getRed(px) * newRed
new_col = makeColor(nRed, getGreen(px), getBlue(px))
# Bottom-left
elif (x < w):
px = getPixel(pic, x, y - h)
nGreen = getGreen(px) * newGreen
new_col = makeColor(getGreen(px), nGreen, getBlue(px))
# Bottom-right
else:
px = getPixel(pic, x - w, y - h)
nBlue = getBlue(px) * newBlue
new_col = makeColor(getGreen(px), getBlue(px), nBlue)
setColor(new_px, new_col)
return newPic
file = pickAFile()
picture = makePicture(file)
#picture = crazyPic(picture, 0.299, 0.587, 0.114)
# Here, with my favorite r, g, b weights
picture = crazyPic(picture, 0.21, 0.71, 0.07)
writePictureTo(picture, "/home/quartered.jpg")
show(picture)
Выход (Картина Антони Тапиеса):
......От......
Вот более подробная тема о оттенках серого.