示例#1
0
    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} байт.")
示例#2
0
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
示例#3
0
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
示例#4
0
    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))
示例#5
0
    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("Сообщение успешно добавлено в изображение")