def message_changed(self): if self.image_capacity < 0: return byte_array = QByteArray() byte_array.push_back(self.ui.message_frame.toPlainText().encode()) self.used_capacity = len(self.ui.message_frame.toPlainText()) if self.image_capacity < self.used_capacity: self.ui.output_label.setText(f"Размер сообщения превышен на: {self.used_capacity - self.image_capacity} байт.") else: self.ui.output_label.setText(f"Ещё можно ввести: {self.image_capacity - self.used_capacity} байт.")
def read_bytes(image: QImage, start, length) -> QByteArray: array = QByteArray() buffer = 0 for i in range(to_bits(start), to_bits(start + length)): buffer = (buffer << 1) | get_bit(image, i) if i % 8 == 7: array.push_back(bytes((buffer, ))) buffer = 0 return array
def read_bytes(image: QImage, begin, length) -> QByteArray: byte_array = QByteArray() buffer = 0 end = (begin + length) * 8 for i in range(begin * 8, end): buffer = (buffer << 1) | get_bit(image, i) if i % 8 == 7: byte_array.push_back(bytes((buffer, ))) buffer = 0 return byte_array
def message_changed(self): array = QByteArray() array.push_back(self.get_input().encode()) self.data.curr_power = len(array) if self.data.less(): argument = self.data.diff() self.set_output_message( "Ещё можно ввести: {} байт.".format(argument)) return if self.data.max_(): self.set_output_message("Размер сообщения достиг максимума.") return argument = self.data.rdiff() self.set_output_message( "Размер сообщения превышен на: {} байт.".format(argument))
def encode_text(self): if not self.is_loaded: self.ui.output_label.setText("Изображение не загружено в программу") return self.used_capacity = len(self.ui.message_frame.toPlainText()) if self.image_capacity < self.used_capacity: self.ui.output_label.setText("Ошибка. Недостаточно места!") return byte_array = QByteArray() byte_array.push_back(self.ui.message_frame.toPlainText().encode()) for i in range(4): byte_array.push_front(bytes(((self.used_capacity >> i * 8) & 0xff,))) for i in range(len(MainWindow.indicator) - 1, -1, -1): byte_array.push_front(bytes((MainWindow.indicator[i],))) write_bytes(self.image, byte_array, 0) self.ui.output_label.setText("Сообщение успешно добавлено в изображение")