Показать сообщение отдельно
Старый 07.11.2009, 11:41   #8
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: К вопросу о сжатии черно-белого изображения

Ммммммм... Можно конечно попробовать....

Пока остановился на таком алгоритме (приведу для распаковки):
1. Читаем байт N.
2. Если оба старших бита N установлены в 1, то это повторитель. Шестой бит - это цвет точек, остальные пять бит - количество повторений. То есть байт раскладывается на 11CAAAAA, где бит C - цвет точек, биты A - количество повторений.
3. Иначе, прочитанный байт - это просто набор восьми точек. Каждый бит в байте - цвет точки.

Таким образом, если исходное изображение содержало 28x28 пикселей и цвет каждой точки занимал один байт, получается 784 байта. С помощью вышеприведенного алгоритма такая картинка ужимается как правило до 55-60 байт. И в целом, файл с набором картинок 28x28, занимающий ~49 Mb ужался до ~3 Mb. Все равно очень много, не влезет в heap никакого телефона (((
Чтож, займусь пока обрезкой, скоро взглянем на результаты.

UPD: Для наглядности просто приведу небольшую картинку какими могут быть символы:
UPD2: Сделал обрезание, в итоге файл сжался до ~2,7 Mb. Много ((((((
Миниатюры
Нажмите на изображение для увеличения
Название: num.PNG
Просмотров: 1094
Размер:	30.4 Кб
ID:	8230  

Последний раз редактировалось Tronix, 07.11.2009 в 15:11.
(Offline)
 
Ответить с цитированием