我有一个ID3D11Texture2D。最终目标是获取图像并将其作为base64编码的字符串嵌入到html中(要求基于我无法控制的现有功能)。我可以通过使用DirectX::SaveWICTextureToFile
将纹理保存到文件中,将纹理作为字节数组加载,然后在base64中对数组进行编码来实现此目的,但我想尽可能地将其保存到文件中。>
理想情况下,会有某种SaveWICTextureToMemory
函数可以将容器格式作为参数,但是到目前为止,我还没有找到任何处理该格式的方法。我已经在WICTextureLoader包中签出了CreateWICTextureFromMemory
和其他函数,但没有找到我想要的东西(也许我错过了)。弄清楚SaveWICTextureToFile
必须生成一个字节数组才能写入文件,我试图从本质上解压缩该函数并剥离该文件的文件创建元素,但是决定可能有一个更简单的解决方案,将我带到这里。
我没有太多代码要看,因为我只列出了许多关键功能,但这通常是这些东西需要存在的地方:
HRESULT ExportImages::GetAngleEncodedString(std::string& encoded, const DirectX::XMMATRIX& projectionMatrix, float radians) const
{
// Draws geometry to m_Texture2D
DrawAngle(projectionMatrix, radians);
unsigned const char* pngBytes = GetPNGBytes(m_Texture2D);
try
{
encoded = Base64Encode(pngBytes);
}
catch (...)
{
// TODO don't catch all, add resolution
return HRESULT(-1);
}
return S_OK;
}
unsigned const char* ExportImages::GetPNGBytes(ID3D11Texture2D* texture) const
{
// ???
}