Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
01.02.2014, 11:52     Стандартный jpg компрессор #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 формате (это опция для меня удобна), но при этом писать свой собственный компрессор - как говорится овчинка выделки не стоит на данном этапе. Отсюда вопрос есть готовые (свободно распространяемые)? Или какие-то другие варианты решений?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 11:52     Стандартный jpg компрессор
Посмотрите здесь:

Поменять стандартный тип данных C++
C++ Философия С++. Введение в стандартный С++. Брюс Эккель
C++ Стандартный класс complex.
Класс как стандартный контейнер C++
Стандартный векторный контейнер C++
C++ Стандартный входной поток
C++ Стандартный поток ввода
Перевести на стандартный С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 201
01.02.2014, 12:12     Стандартный jpg компрессор #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://freeimage.sourceforge.net/
Yandex
Объявления
01.02.2014, 12:12     Стандартный jpg компрессор
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru