고해상도 이미지 (예 : 3264x2448)를로드하려고합니다. 이를 위해 저는 C#에서 IImageFactory 클래스를 사용하고 있습니다. IImageFactory는 Microsoft 사이트에서 다운로드됩니다. 고해상도 이미지를로드하려고하면 "메모리 부족"예외가 발생합니다. 상기 아래 샘플 봐 유무 :IImagingFactory를 사용하여 고해상도 이미지를로드 할 때 메모리 부족 오류가 발생합니다.
IImage GetIImage(string fileName)
{
Bitmap bitmap = null;
Graphics graphics = null;
IntPtr hdcDestination = IntPtr.Zero;
try {
IImage image = null;
IImagingFactory imagingFactory = ImagingFactory.GetImaging();
imagingFactory.CreateImageFromFile(fileName, out image);
bitmap = new Bitmap(width, height);
graphics = Graphics.FromImage(bitmap);
hdcDestination = graphics.GetHdc();
Rectangle dstRect = new Rectangle(0, 0, width, height);
image.Draw(_graphicsHDC, ref dstRect, IntPtr.Zero);
}
catch{}
}
나는 이미지를로드 할 수 있었다 위의 소스 라인을 사용하지만, 추가로에서 OutOfMemory Excep :( 을 던지는 실패 이미지를 그려 내 노력을, 내가 만들어 같은 시도 는 Win32 모바일 응용 프로그램은,있는 나는로드 봇 수있는 다음과 같은 라인을 원하는 이미지를 그립니다. 나는 심지어는 Win32 DLL을 만드는 시도
void DrawImage(HDC *hdc, char *FileName, int width, int height)
{
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
RECT rc = { 0, 0, width, height};
WCHAR Name[MAX_PATH] ={0};
mbstowcs (Name, FileName, strlen (FileName));
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IImagingFactory,
(void **)&pImgFactory)))
{
// Load the image from the JPG file.
if (SUCCEEDED(pImgFactory->CreateImageFromFile(Name, &pImage)))
{
pImage->Draw(*hdc, &rc, NULL);
pImage->Release();
}
pImgFactory->Release();
}
CoUninitialize();}
및 C# 응용 프로그램에서 호출하지만 난 할 수 없습니다. 사람이 수 이 문제를 해결하기 위해 도와주세요.
당신은 이미이 질문을했다 : 당신이 http://stackoverflow.com/questions/1490652/how-to-load-the-high-resolution-images-in-windows-mobile/1491591#1491591을 때로 믿을 경우 크기 조정의 결과에 만족하지 못한다. 섬네일이주는 것은 당신에게 이미지를 어떻게 든 크기 조정해야한다. – Matt
나중에 .. 매트. 어떤 방법 으로든 붙어있는 어떤 방법으로 든 붙어있다 .--( – Naruto