基本的に Imaging API を使用して、Imaging 組み込みの Resize 関数を使用して再スケーリング関数を作成しています。
サイズ変更された関数を持つ Image* ポインターで構築されたカスタム UBitmap クラスをフィードする必要があるため、Rescale 関数 proto を次に示します。
int Rescale(const UBitmap* src, UBitmap* dst, UINT w, UINT h)
私の関数は dst ポインターにヒープを割り当てます (呼び出し元はヒープのみを解放する必要があります)。
私がこれまでに行ったこと:
// Get the IImage ptr from the source
HRESULT hr;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
IImage* img_in = src->GetIImage();
if (img_in)
{
IImagingFactory* pImgf = NULL;
hr = CoCreateInstance(CLSID_ImagingFactory, 0, CLSCTX_ALL,
IID_IImagingFactory, void**)&pImgf);
assert(SUCCEEDED(hr));
IBitmapImage* pIResBmp = NULL;
hr = pImgf->CreateBitmapFromImage(img_in,w,h, PixelFormatDontCare,
InterpolationHintBilinear, &pIResBmp);
assert(SUCCEEDED(hr));
IImage* pImgOut = NULL; // How to obtain IImage pointer from pIResBmp?
bmpOut = new UBitmap(dst);
pImgf->Release();
}
CoUninitialize();
したがって、pImg->CreateBitmapFromImage 呼び出しでイメージの再スケーリングに成功しましたが、IImage* を取得して UBitmap コンストラクターにフィードする方法がわかりません。
前もって感謝します。