Я работал над проектом в node js
по сжатию файла .txt
. Пока мне удалось достичь этой цели, используя Arithmetic coding
для encoding
и decoding
данных, но теперь я хочу использовать этот код для сжатия изображений, но я не могу понять, как это сделать. Моя основная проблема в том, как мне читать данные из изображения для сжатия. Я не имел ни малейшего представления, как это сделать с Buffer
, stream
или даже с Blob
(когда-то поиск по интересующим тезисам был возможным способом сделать это).
Я знал, что Работа с изображениями в Python
довольно проста, поэтому я решил сделать скрипт для чтения изображений с помощью python
. На данный момент я не интегрирую Python
и Node js
, что будет позже.
У меня был небольшой опыт работы с некоторыми python
библиотеками, такими как open-csv
и Pillow (PIL)
. До сих пор я использовал функцию cv2.imread()
, чтобы прочитать изображение и сохранить его как binary
в файле .txt
. на данный момент я не интегрировал его с Node js
.
from cv2 import cv2
img1 = cv2.imread('cat.png',0)
with open("cat.txt", 'wb') as out:
out.write(img1.tobytes())
Теперь я использую этот cat.txt
файл и читаю эти данные fs
в node js
, а затем сжимаю и распаковываю его Arithmetic coding
.
Теперь к основной проблеме:
Когда я читаю изображение в python
и сохраняю его в cat.txt
, его размер намного больше, чем cat.png
файл. Даже так, что после сжатия этого cat.txt
файла результирующий compressed_cat.txt
больше, чем cat.png
.
cat.png
= 242kb, cat.txt(before compression)
= 971kb, compressed_cat.txt(after compression)
= 251kb
Мне кажется, я неправильно читаю или сохраняю файл. Я не знаю, как решить эту проблему.
Требуется дополнительная помощь
- Есть ли способ обработать изображение в
node js
как в python
, поэтому мне не нужно интегрировать его позже. Я пробовал Multer
и Jimp
, но я не мог найти в нем ничего, например python open-csv
- И я не знаю, как сохранить данные после сжатия, потому что в основном они хранятся в
.zip
или .rar
. Я никогда не сохранял / не читал данные в таком формате.