| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > сжатие изображения |
| Автор: Lin07 3.10.2008, 19:33 |
| собственно сам алгоритм мне понятен, но вот вопрос как представленно конкретное изображение , как его изменить так ,что бы сжать(в каком виде представить?)... по алгаритму 1. алгоритм RLE, 2. алгоритм LZW, 3. алгоритм Хаффмана. 16 ричном думаю степнь сжатию будет больно маленькая, а как проглядеть файл в двойчном я так и не понял так же непонятно в каком формате изображение не сжато... (TIFF может?) |
| Автор: Master01 3.10.2008, 22:49 |
| вообще-то не уверен что понял вопрос правильно... но в TIFF действительно изображение может храниться в незжатом виде (а может и в сжатом), т.е. просто последовательность байтов, представляющих RGB компоненты цветов пикселей. как-то писал функцию которая читает такое изображение, если будет интересно могу выложить. а сорри, всё что я тут писал это к TGA относится |
| Автор: Lin07 3.10.2008, 23:07 | ||
в обшем вопрос сводиться скорее к такому что надо сделать с изображением что бы стало возможно применить на нем данные алгоритмы,? представить в бинарном виде или другое что то! для меня изоброжение - совершенно непонятная структура файла.. так как почти все они уже в сжатых форматах ! |
| Автор: yar 3.10.2008, 23:12 |
| Каким-то образом получить Bitmap. Грубо говоря, массив пикселов некоторых цветов. Возьми например BMP, он чаще всего не сжат. А Хаффмана, и вообще, энтропийное кодирование можно применять к совершенно любому потоку байтов.. |
| Автор: Lin07 3.10.2008, 23:21 | ||
ну к примеру в паинте я тупо закрашу фон в черный и сохраню! как мне получить этот набор байтов? |
| Автор: yar 3.10.2008, 23:39 |
| It Depends. Если это виндоуз, то можно воспользоваться GDI+, и классом http://msdn.microsoft.com/en-us/library/ms534420(VS.85).aspx. |
| Автор: Lin07 3.10.2008, 23:48 | ||
спс ша поглядим |
| Автор: Pion 5.10.2008, 23:03 |
| может уже не актуально, но вообще, по хорошему, чисто поток в формате RGB сжимать не стоит... если стоит задача пожать. Если нужна хорошая степень сжатия, то сначала надо сделать некоторую предобработку изображения (RGB), типа дискретного косинусного или дискретного вейвлетного преобразования... |
| Автор: bsa 6.10.2008, 14:41 | ||
Преобразования могут приводить к потерям, например JPEG. Наиболее простой способ - взять файл, разбить на компоненты (т.е. на 3 массива: красной, зеленой и синей составляющих) и сжать раздельно с помощью сторонней библиотеки, например, bzip2. |
| Автор: Lin07 7.10.2008, 11:27 | ||
мне такую лабу просто придеться сдавать.. и я не думаю ,чт ов ней можно пользоваться винАЙПИ можно будет... скорее загрузить изображение - представить в 2-ичном коде..пожать этот двоичный код по данным алгоритмам... |
| Автор: bsa 7.10.2008, 16:26 | ||
Ты где про WinAPI прочитал? |
| Автор: Lin07 7.10.2008, 16:34 | ||
GDI разве не реализуеться функциями винAPI... ? |
| Автор: bsa 7.10.2008, 16:45 | ||||
Ты сам перечитай свое предыдущее сообщение и объясни, какое отношение цитата имеет к твоему ответу. Тебе вообще предлагаются алгоритмы действий с уже распакованными данными, которые лежат в памяти в виде массива 3-х или 4-х байтных значений цвета (RGB или RGBu, u - unused). |
| Автор: Lin07 7.10.2008, 16:59 | ||||||
та не было не одного алгоритма(во всем треде ни одного куска кода ..ога) так как собственно дело не срочное и торопиться тут некуда я не спешу читать каждый метод класса .. (надо взять методичку и поглядеть как там советуеться , мжет иду немного не потому пути.....) а вообше думаю достаточно частое задание и надеялся получить ответы , как это было сделано другими... все равно спс |
| Автор: bsa 7.10.2008, 17:04 | ||
алгоритм != код Код - это реализация алгоритма. |
| Автор: Lin07 7.10.2008, 17:06 | ||||
и не поспоришь |