该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
晕! 看清IP 在说! 我是楼主 ! 但是这是我第而次近来!
发生了什么事! 我晕死了! 在java C# VB
读去图片很简单, 前天用 C++做 ,根句图片生成不规则按扭,就挺 麻烦的, 不过还是成功了!
你说问的问题我想在标准C写,我要点时间,不能马上写出来! 我可以给你C++和C#
(一 vc 狂读图片)
#i nclude
#i nclude // DirectDraw interfaces
#pragma comment(lib,"ddraw.lib")
#pragma comment(lib,"dxguid.lib")
#i nclude "mmstream.h" // multimedia stream interfaces
#i nclude "amstream.h" // DirectShow multimedia stream interfaces
#i nclude "ddstream.h" // DirectDraw multimedia stream interfaces
#pragma comment(lib,"strmiids.lib")
HRESULT RenderStreamToSurface(IDirectDrawSurface *pSurface, IMultiMediaStream *pMMStream)
{
IMediaStream *pPrimaryVidStream;
IDirectDrawMediaStream *pDDStream;
IDirectDrawStreamSample *pSample;
RECT rect;
DDSURFACEDESC ddsd;
HRESULT hr;
hr = pMMStream->GetMediaStream(MSPID_PrimaryVideo, &pPrimaryVidStream);
if (FAILED(hr))
{
return hr;
}
pPrimaryVidStream->QueryInterface(IID_IDirectDrawMediaStream, (void **)&pDDStream);
ddsd.dwSize = sizeof(ddsd);
hr = pDDStream->GetFormat(&ddsd, NULL, NULL, NULL);
if (SUCCEEDED(hr))
{
rect.top = rect.left = 0;
rect.bottom = ddsd.dwHeight;
rect.right = ddsd.dwWidth;
hr = pDDStream->CreateSample(pSurface, &rect, 0, &pSample);
if (SUCCEEDED(hr))
{
pMMStream->SetState(STREAMSTATE_RUN);
while (pSample->Update(0, NULL, NULL, NULL) == S_OK)
{
// Empty loop.
}
pMMStream->SetState(STREAMSTATE_STOP);
pSample->Release();
}
}
pDDStream->Release();
pPrimaryVidStream->Release();
return hr;
}
HRESULT RenderFileToMMStream(
const char * szFileName,
IMultiMediaStream **ppMMStream,
IDirectDraw *pDD)
{
if (strlen(szFileName) > MAX_PATH)
{
return E_INVALIDARG;
}
IAMMultiMediaStream *pAMStream;
HRESULT hr = CoCreateInstance(CLSID_AMMultiMediaStream, NULL, CLSCTX_INPROC_SERVER, IID_IAMMultiMediaStream, (void **)&pAMStream);
if (FAILED(hr))
{
return hr;
}
WCHAR wPath[MAX_PATH + 1];
MultiByteToWideChar(CP_ACP, 0, szFileName, -1, wPath, MAX_PATH + 1);
pAMStream->Initialize(STREAMTYPE_READ, AMMSF_NOGRAPHTHREAD, NULL);
pAMStream->AddMediaStream(pDD, &MSPID_PrimaryVideo, 0, NULL);
pAMStream->AddMediaStream(NULL, &MSPID_PrimaryAudio, AMMSF_ADDDEFAULTRENDERER, NULL);
hr = pAMStream->OpenFile(wPath, 0);
if (SUCCEEDED(hr))
{
hr = pAMStream->QueryInterface(IID_IMultiMediaStream, (void**)ppMMStream);
}
pAMStream->Release();
return hr;
}
int __cdecl main(int argc, char *argv[])
{
if (argc
{
printf("Usage : showstrm movie.ext\n");
exit(0);
}
DDSURFACEDESC2 ddsd;
LPDIRECTDRAW7 pDD;
LPDIRECTDRAWSURFACE7 pPrimarySurface;
IMultiMediaStream *pMMStream;
CoInitialize(NULL);
DirectDrawCreateEx (NULL, (void **)&pDD, IID_IDirectDraw7, NULL);
pDD->SetCooperativeLevel(GetDesktopWindow(), DDSCL_NORMAL);
ZeroMemoy(&ddsd, sizeof(ddsd));//设置页面内存大小