void rescale_image(char *data, unsigned short size, char *&data1, unsigned short &size1) { FI_INTERFACE *fei = NULL; CallService(MS_IMG_GETINTERFACE, FI_IF_VERSION, (LPARAM) &fei); if (fei == NULL) return; FIMEMORY *hmem = fei->FI_OpenMemory((BYTE *)data, size); FREE_IMAGE_FORMAT fif = fei->FI_GetFileTypeFromMemory(hmem, 0); FIBITMAP *dib = fei->FI_LoadFromMemory(fif, hmem, 0); fei->FI_CloseMemory(hmem); if (fei->FI_GetWidth(dib) > 64) { FIBITMAP *dib1 = fei->FI_Rescale(dib, 64, 64, FILTER_BSPLINE); FIMEMORY *hmem = fei->FI_OpenMemory(NULL, 0); fei->FI_SaveToMemory(fif, dib1, hmem, 0); BYTE *data2; DWORD size2; fei->FI_AcquireMemory(hmem, &data2, &size2); data1 = (char*)mir_alloc(size2); memcpy(data1, data2, size2); size1 = size2; fei->FI_CloseMemory(hmem); fei->FI_Unload(dib1); } fei->FI_Unload(dib); }
INT_PTR CSteamCaptchaDialog::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_PAINT) { FI_INTERFACE *fei = 0; INT_PTR result = CALLSERVICE_NOTFOUND; if (ServiceExists(MS_IMG_GETINTERFACE)) result = CallService(MS_IMG_GETINTERFACE, FI_IF_VERSION, (LPARAM)&fei); if (fei == NULL || result != S_OK) { MessageBox(0, TranslateT("Fatal error, image services not found. Avatar services will be disabled."), TranslateT("Avatar Service"), MB_OK); return 0; } FIMEMORY *stream = fei->FI_OpenMemory(m_captchaImage, m_captchaImageSize); FREE_IMAGE_FORMAT fif = fei->FI_GetFileTypeFromMemory(stream, 0); FIBITMAP *bitmap = fei->FI_LoadFromMemory(fif, stream, 0); fei->FI_CloseMemory(stream); PAINTSTRUCT ps; HDC hDC = BeginPaint(m_hwnd, &ps); //SetStretchBltMode(hDC, COLORONCOLOR); StretchDIBits( hDC, 11, 11, fei->FI_GetWidth(bitmap) - 13, fei->FI_GetHeight(bitmap), 0, 0, fei->FI_GetWidth(bitmap), fei->FI_GetHeight(bitmap), fei->FI_GetBits(bitmap), fei->FI_GetInfo(bitmap), DIB_RGB_COLORS, SRCCOPY); fei->FI_Unload(bitmap); //fei->FI_DeInitialise(); EndPaint(m_hwnd, &ps); return FALSE; } CSteamDlgBase::DlgProc(msg, wParam, lParam); return FALSE; }