Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
#1

Стандартный jpg компрессор - C++

01.02.2014, 11:52. Просмотров 360. Ответов 1
Метки нет (Все метки)

Здравствуйте уважаемые форумчане!

Пишу приложение (winform) для расчета и визуализации 3d объектов код в принципе создан навожу марафет. Визуализация выполнена с использованием OpenGL, требуется сохранение получаемого изображение. Удалось реализовать код для формирования карты пикселе (RGB) с сохранением в BMP для этого под себя адаптировал следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void SaveBitmapToFile(unsigned int* pBitmapBits, LONG lWidth, LONG lHeight, WORD wBitsPerPixel, LPCTSTR lpszFileName )  
{  
    unsigned long headers_size = sizeof( BITMAPFILEHEADER ) +  
                                 sizeof( BITMAPINFOHEADER );  
    unsigned long padding_size    = ( 4 - ( ( lWidth * 3 ) % 4 ) ) % 4;  
    unsigned long pixel_data_size = lHeight * ( ( lWidth * 3 ) + padding_size );  
  
    BITMAPINFOHEADER bmpInfoHeader = {0};  
    bmpInfoHeader.biSize = sizeof(BITMAPINFOHEADER);  
    bmpInfoHeader.biBitCount = wBitsPerPixel;  
    bmpInfoHeader.biClrImportant = 0;  
    bmpInfoHeader.biClrUsed = 0;  
    bmpInfoHeader.biCompression = BI_RGB;  
    bmpInfoHeader.biHeight = lHeight;  
    bmpInfoHeader.biWidth = lWidth;  
    bmpInfoHeader.biPlanes = 1;  
    bmpInfoHeader.biSizeImage = pixel_data_size;  
    BITMAPFILEHEADER bfh = {0};  
    bfh.bfType=0x4D42;  
    bfh.bfOffBits = headers_size; 
    HANDLE hFile = CreateFile( lpszFileName,GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,  FILE_ATTRIBUTE_NORMAL, NULL );  
    if( !hFile ) return;  
     DWORD dwWritten = 0;  
    WriteFile( hFile, &bfh, sizeof(bfh), &dwWritten ,  NULL );  
    WriteFile( hFile,  &bmpInfoHeader, sizeof(bmpInfoHeader),  &dwWritten,NULL );  
    WriteFile(hFile, pBitmapBits, bmpInfoHeader.biSizeImage, &dwWritten, NULL );  
    CloseHandle(hFile);  
}
Но хотелось бы еще из своего приложения иметь возможность сохранять и в jpg формате (это опция для меня удобна), но при этом писать свой собственный компрессор - как говорится овчинка выделки не стоит на данном этапе. Отсюда вопрос есть готовые (свободно распространяемые)? Или какие-то другие варианты решений?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 11:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стандартный jpg компрессор (C++):

Перевести на стандартный С++ - C++
class TActivator; typedef void (__closure *TTriggerProc)(TActivator *Sender); struct TRecepient{ TTriggerProc OnProc; ...

Стандартный векторный контейнер - C++
"Обычно элементы создаются с помощью оператора new() и освобождаются с помощью оператора delete(), т.е. для создания нового элемента...

Стандартный класс complex. - C++
1)Есть ли стандартный не шаблонный класс complex? Я нашел только шаблонный класс, определенный в заголовочном файле <complex> Есть ли...

Стандартный входной поток - C++
Добрый день, помогите разобраться. Хочу написать функцию, которая читает из входного потока некое количество данных вида...

Стандартный конструктор у union? - C++
Не могу сообразить в чем проблема struct Foo { union { struct {float x,y,z;} v; struct { ...

Стандартный поток ввода - C++
Доброго времени суток. Допустим есть код: double d; cin >> d; Допустим, в потоке ввода символы "12.e", поток...

1
Меорн
76 / 61 / 29
Регистрация: 01.02.2014
Сообщений: 207
01.02.2014, 12:12 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://freeimage.sourceforge.net/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 12:12
Привет! Вот еще темы с ответами:

Стандартный поток ввода - C++
В условии задачи написано: на стандартном потоке ввода задаётся последовательность целых чисел. Вся эта последовательность завершается...

Struct (есть ли стандартный конструктор) - C++
Имеется студия 2010 struct _1C { string Tag; string Rus; string Eng; }; В коде пишу: vector<_1C>

Класс как стандартный контейнер - C++
Здорова господа! Опять есть условие задачи: Напишите такие классы, чтобы Vector из 16.2.1 и Vector из 16.2.2 могли использоваться как...

Поменять стандартный тип данных - C++
Народ, помогите с вопросом. В С++ стандартным типом данных является int. Как поменять это на что-то другое. Например, что бы переменная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru