Ответ: К вопросу о сжатии черно-белого изображения
Ммммммм... Можно конечно попробовать....
Пока остановился на таком алгоритме (приведу для распаковки):
1. Читаем байт N.
2. Если оба старших бита N установлены в 1, то это повторитель. Шестой бит - это цвет точек, остальные пять бит - количество повторений. То есть байт раскладывается на 11CAAAAA, где бит C - цвет точек, биты A - количество повторений.
3. Иначе, прочитанный байт - это просто набор восьми точек. Каждый бит в байте - цвет точки.
Таким образом, если исходное изображение содержало 28x28 пикселей и цвет каждой точки занимал один байт, получается 784 байта. С помощью вышеприведенного алгоритма такая картинка ужимается как правило до 55-60 байт. И в целом, файл с набором картинок 28x28, занимающий ~49 Mb ужался до ~3 Mb. Все равно очень много, не влезет в heap никакого телефона (((
Чтож, займусь пока обрезкой, скоро взглянем на результаты.
UPD: Для наглядности просто приведу небольшую картинку какими могут быть символы:
UPD2: Сделал обрезание, в итоге файл сжался до ~2,7 Mb. Много ((((((
Последний раз редактировалось Tronix, 07.11.2009 в 15:11.
|