Pregunta

Estoy usando la API de imagen para escribir básicamente una función de cambio de escala utilizando la imagen de función integrada de cambio de tamaño.

necesito para alimentar a una clase UBitmap a medida que se construye con una imagen * puntero con la función de cambiar de tamaño, así que aquí tiene la función de proto Rescale:

int Rescale(const UBitmap* src, UBitmap* dst, UINT w, UINT h)

Mi función asigna el montón para el puntero del horario de verano (persona que llama no necesita liberar solamente).

Lo que he hecho hasta ahora:

// 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();

Así que he re-escalado con éxito la imagen con el pImg-> llamada CreateBitmapFromImage, pero no sé cómo obtener IImage * para alimentar el constructor UBitmap.

Gracias de antemano.

¿Fue útil?

Solución

Para obtener IImage * objeto sólo tiene que utilizar IImagingFactory :: CreateImageFromFile. Ver http://msdn.microsoft.com/en-us/library/aa918650 .aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top