Если вы используете для своего собственного использования, вы можете создать свой собственный формат файла изображения, а в заголовке вы можете отметить, используется ли RLE или нет, а также диапазон координат X и Y и возможные битовые плоскости, для которых Это использовано. Но если вы хотите создать файл изображения, который следует за определенным форматом файла изображений, который использует RLE (.pcx
), вы должны следовать спецификациям формата файла. Если я правильно помню, в .pcx
не было возможности частично отключить RLE.
Если вы не обязаны использовать RLE, и вы ищете только простой способ сжатия, прежде чем использовать какое-либо сжатие, я предлагаю вам сначала проверить, сколько байтов берет ваш двоичный файл матрицы 5x5. Если размер файла составляет 25 байт или более, вы сохраняете его, используя по крайней мере один байт (8 бит) для каждого элемента (или, альтернативно, у вас много данных, которые не являются содержимым матрицы). Если вам не нужно сохранять размер, двоичная матрица 5x5 принимает 25 бит, что составляет 4 байта и 1 бит, поэтому практически 5 байтов. Я совершенно уверен, что нет метода сжатия, который обычно полезен для файлов размером 5 байт. Если у вас есть матрицы разных размеров, вы можете использовать, например. беззнаковые целочисленные 16-битные поля (по 2 байта) для максимального размера матрицы по горизонтали/вертикали 65535 или беззнаковых целочисленных 32-битных полей (по 4 байта) для максимального размера матрицы по горизонтали/вертикали 4294967295.
Например, 100x100 двоичный матрица принимает 10000 бит, что составляет 1250 байт. Добавьте 2 x 2 = 4 байта для 16-разрядных полей размера или 2 x 4 = 8 байтов для 32-разрядных полей размера. После этого вы можете планировать, какой будет лучший метод сжатия.
Можете ли вы дать нам код, который вы используете для RLE? – kitchenette
Из wikipedia: _It не полезно в файлах, которые не имеют много запусков, так как это может значительно увеличить размер файла. Вероятно, это причина, можете ли вы также показать изображение, которое вы пытались сжать? –