none
使用FreeImage解析返回的byte[]像素数据在UWP中如何显示为图片? RRS feed

  • 问题

  • FIBITMAP_RT FreeImageRT::LoadImage(IRandomAccessStream ^stream, String ^fileName) {

    FIBITMAP_RT ret;

    ret.data = 0;
    if (stream != nullptr) {
    HRESULT hr = CreateStreamOverRandomAccessStream(
    reinterpret_cast<IUnknown*>(stream), IID_PPV_ARGS(&_fileStream));
    if (!SUCCEEDED(hr)) {
    //处理异常
    }

    FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;

    // 1 获取文件格式
    fif = rtFreeImage_GetFileType(_fileStream);
    if (fif == FIF_UNKNOWN && fileName != nullptr) {
    fif = FreeImage_GetFIFFromFilenameU(fileName->Data());
    }

    if ((fif != FIF_UNKNOWN) && (FreeImage_FIFSupportsReading(fif) != 0)) {
    FIBITMAP *dib = rtFreeImage_Load(fif, _fileStream, 0);
    int bpp = FreeImage_GetBPP(dib);
    int Width, Height, Stride;

    Width = FreeImage_GetWidth(dib); //图像宽度
    Height = FreeImage_GetHeight(dib); //图像高度
    Stride = FreeImage_GetPitch(dib); //图像扫描行的大小
    BYTE *byte = FreeImage_GetBits(dib);

    ret.data = (MyIntPtr)byte;
    ret.Bpp = bpp;
    ret.Width = Width;
    ret.Height = Height;
    ret.Stride = Stride;
    }
    }

    return ret;
    }

    图片格式为.jpg

    使用上面的FreeImage代码获取到了图片的原始像素数据,但是不知道在uwp中该如何将获取到的像素数据转换成图片并显示出来。

    我在网上查了很多资料,没有发现有关于FreeImage和UWP配合使用的例子。希望有人能帮帮忙指点一下 万分感谢!!!

    2018年4月22日 12:57

答案