Я пытаюсь загрузить изображение с высоким разрешением (например, 3264x2448). Для этого я использую класс IImageFactory в C #. IImageFactory загружается с сайта Microsoft. Если я пытаюсь загрузить изображение с высоким разрешением, я получаю исключение «недостаточно памяти». Посмотрите на образец ниже:
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{}
}
Используя вышеприведенные исходные строки, я смог загрузить изображения, но мои попытки нарисовать изображение потерпели неудачу, выбросив ExOpMemory Excep :(
Далее я попытался сделать то же самое, создав мобильное приложение Win32, в котором я мог загружать и рисовать нужные изображения со следующими строками.
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();}
Я даже пытался создать win32 dll и вызывать его из приложения C #, но не смог.
Может кто-нибудь помочь мне решить эту проблему?