Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> API для загрузки JPG, Есть такое? 
:(
    Опции темы
Fixin
  Дата 29.12.2004, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Наверное уже спрашивали, но мне немножко(очень) некогда. Подскажите функции для загрузки jpg в HBITMAP. Если нет стандартных вызовов системной ф-ции, то мне проще преобразовать картинки в bmp.
PM MAIL ICQ   Вверх
chipset
Дата 29.12.2004, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



GDI+ пойдет?
CImage класс.
В WInApi таких функций нету.. афаик.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Fixin
Дата 29.12.2004, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Подойдет!!!
PM MAIL ICQ   Вверх
chipset
Дата 29.12.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



VC7.1 должен быть.
Смотри в MSDN по CImage.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Fixin
Дата 29.12.2004, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Еще что есть?
Добавлено @ 21:33
Внешние библиотеки?
Добавлено @ 21:34
CImage нет - VC5 - нового найти не могу
PM MAIL ICQ   Вверх
chipset
Дата 29.12.2004, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165





--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Fixin
Дата 29.12.2004, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Сенькваю!
Добавлено @ 21:49
У меня скорость 5kbs, а библиотека на 2.5 Мb. Может что по-проще?
PM MAIL ICQ   Вверх
chipset
Дата 29.12.2004, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 2
Всего: 165



И правда, что это я..
http://rsdn.ru/article/qna/gdi/drawimg.xml smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
DENNN
Дата 30.12.2004, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



загружаем
Код

bool LoadPictFromFile(IPicture** gpPicture, const char *szFile)
{
bool pict_loaded;
       if (gpPicture)
                gpPicture->Release();
*gpPicture=0;
pict_loaded=false;

// open file
HANDLE hFile = ::CreateFile(szFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (INVALID_HANDLE_VALUE == hFile)
 return false;

// get file size
DWORD dwFileSize = ::GetFileSize(hFile, NULL);
if ( -1 == dwFileSize )
{
 CloseHandle(hFile);
 return false;
}

LPVOID pvData = NULL;
// alloc memory based on file size
HGLOBAL hGlobal = ::GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
if (NULL == hGlobal)
{
 _ASSERTE(NULL != hGlobal);
 ::CloseHandle(hFile);
 return false;
}

pvData = GlobalLock(hGlobal);
if (NULL == pvData)
{
       _ASSERTE(NULL != pvData);
 ::GlobalFree(hGlobal);
 ::CloseHandle(hFile);
 return false;
}

DWORD dwBytesRead = 0;
// read file and store in global memory
BOOL bRead = ::ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
::CloseHandle(hFile);
if (FALSE == bRead || dwFileSize!=dwBytesRead)
{
 ::GlobalUnlock(hGlobal);
 ::GlobalFree(hGlobal);
 return false;
}

LPSTREAM pstm = NULL;
// create IStream* from global memory
HRESULT hr = ::CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
if (!SUCCEEDED(hr) || !pstm)
{
 ::GlobalUnlock(hGlobal);
 ::GlobalFree(hGlobal);
 return false;
}

// Create IPicture from image file
hr = ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID*) gpPicture);
pstm->Release();
if (!SUCCEEDED(hr) || !gpPicture)
{
 *gpPicture=0;
 pict_loaded=false;
}
else
 pict_loaded=true;

::GlobalUnlock(hGlobal);
::GlobalFree(hGlobal);

return pict_loaded;
}

Теперь, когда в объекте IPicture у нас есть загруженное изображение, то можно его вывести на экран
Код

#define HIMETRIC_INCH 2540
#define MAP_LOGHIM_TO_PIX(x,ppli)   ( ((ppli)*(x) + HIMETRIC_INCH/2) / HIMETRIC_INCH )
IPicture* gpPicture;
.....
LoadPictFromFile(...........);
.....
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 case WM_PAINT:
  hdc = BeginPaint(hWnd, &ps);
  if (gpPicture)
  {
   // get width and height of picture
   long hmWidth;
   long hmHeight;
   gpPicture->get_Width(&hmWidth);
   gpPicture->get_Height(&hmHeight);
   // convert himetric to pixels
   int nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
   int nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);
   RECT rc;
   GetClientRect(hWnd, &rc);
   // display picture using IPicture::Render
   gpPicture->Render(hdc, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, &rc);
   
  };
  EndPaint(hWnd, &ps);
  break;
}


Естественно, точно также можно "отрендерить" картинку в свой DC с выбранным в нем HBITMAP

Это сообщение отредактировал(а) DENNN - 30.12.2004, 15:03
PM ICQ   Вверх
Mad
Дата 30.12.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Fixinlibjpeg


--------------------
user posted image
PM MAIL   Вверх
Fixin
Дата 1.1.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



DENNN
Огромное спасибо тебе и всем остальным - все работает! Только:

Код

bool LoadPictFromFile(IPicture** gpPicture, const char *szFile)
{
bool pict_loaded;
    if (*gpPicture)
         (*gpPicture)->Release();
...
}

PM MAIL ICQ   Вверх
_hunter
Дата 1.1.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



только что? ;)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Fixin
Дата 1.1.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Сравни начала кодов - в условии звездочка и после(у меня без этого не работало). smile
PM MAIL ICQ   Вверх
_hunter
Дата 1.1.2005, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



понятно.
просто когда пишут "только" обычно дальше ( за текстом ) идет объяснение.
но это все мелочи smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Fixin
Дата 1.1.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



_hunter
Извини.
У меня инет дома - платить приходится. А за то, что делал его бесплатным заплатил прикольный штраф - вычислили по номеру телефона, хотя мучались аж 2 недели. Я и не думал, что для "НИХ" это окажется сложным
Добавлено @ 23:50
smile
Добавлено @ 23:51
А что ты еще тут?
Добавлено @ 23:52
Я и не думал, что тема долго провисит - думал пошлют в ФАКу

Это сообщение отредактировал(а) Fixin - 2.1.2005, 00:11
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1035 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.