Я завершил этап 1 и начал фазу 2, которая требует создания функции, которая может перевернуть изображение по горизонтали. То есть, пиксель, расположенный на крайнем правом конце строки, заканчивается в крайнем левом углу строки и наоборот (не забудьте сохранить порядок RGB!). Я сделал это, но я сделал это как функцию вне класс. Мне нужно вернуть функцию обратно в класс и использовать информацию, которая уже загружена в класс. Как я могу это сделать. Мне также нужна помощь в применении всех функций (flatten red, greyscale и horizontal flip) к одному файлу и только запись полученного кода в файл после того, как будут применены все функции. Пожалуйста, имейте в виду, я только 11, поэтому я не углубленное понимание Python и редактирования изображенийКлассы в Python
class PPM(object):
def __init__(self, infile, outfile):
self.infile=infile
self.outfile=outfile
#Read in data of image
data= open(self.infile,"r")
datain=data.read()
splits=datain.split()
#Header info
self.type=splits[0]
self.columns=splits[1]
self.row=splits[2]
self.colour=splits[3]
self.pixels=splits[4:]
def greysscale():
for row in range(rows):
for column in range(columns):
r, g, b = image.getPixel(row, column)
brightness = int(round(0.299 * r + 0.587 * g + 0.114 * b))
image.setPixel(row, column, color_rgb(brightness, brightness, brightness))
def flip_horizontal(input,output):
data= open(self.infile,"r")
datain=data.read()
splits=datain.split()
type_of_ppm = splits[0]
no_of_columns = splits[1]
no_of_rows = splits[2]
max_color_value = splits[3]
pixels = splits[4:]
#print pixels
dataout = open(output, 'w')
dataout.write(type_of_ppm + '\n')
dataout.write(no_of_columns + ' ' + no_of_rows + '\n')
dataout.write(max_color_value +'\n')
if int(no_of_columns) > 1000:
return "ERROR!! Number of columns is larger than what can be held in a buffer."
else:
temp_list = []
for b in range(int(no_of_rows)):
column_list = []
column_list += pixels[0:int(no_of_columns) * 3]
pixels = pixels[int(no_of_columns) * 3 : ]
temp_list.append(column_list)
#print temp_list
new_list = []
for i in range(int(no_of_rows)):
for j in range(int(no_of_columns)):
new_list.append (temp_list[i][-3])
new_list.append (temp_list[i][-2])
new_list.append (temp_list[i][-1])
temp_list[i] = temp_list[i][:-3]
#print new_list
for a in range(int(no_of_columns) * int(no_of_rows) * 3):
dataout.write(new_list[a] + ' ')
def flattenred():
for colour in range (0,len(self.pixels),3):
self.pixels [colour]=str[0]
def writetofile(self):
dataout= open(self.outfile,"w")
dataout.write(self.type +"\n" + self.columns + "\n" + self.row +"\n"+ self.colour +"\n"+ " ".join (self.pixels))
sample= PPM("cake.ppm", "Replica.ppm")
sample.writetofile()
sample.flattenred()
sample.flip_horizontal
что вы имеете в виду 'ул [0]' в коде? – zhangxaochen