Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];

Вниз

Загрузка png из потока в gdiplus.   Найти похожие ветки 

 
S7r ©   (2007-11-24 18:49) [0]

Здравствуйте,
Собственно возникла следующая проблема: при загрузке png файла из потока в gdiplus вываливается access violation. Код следующий:

   OpenDialog1.Execute;
   MemStream:=TMemoryStream.Create;
   MemStream.LoadFromFile(OpenDialog1.FileName);
   StreamAdapt:=TStreamAdapter.Create(MemStream, soOwned);
   Img:=TGPImage.Create(StreamAdapt);//вот здесь access violation
   //Img:=TGPImage.Create(OpenDialog1.FileName);//так все нормально
   gdiGraphics:=TGPGraphics.Create(Form1.Canvas.Handle);
   gdiGraphics.DrawImage(Img, 0, 0, Form1.Width, Form1.Height);


Странно еще то, что все стабильно работает если загружать файлы других поддерживаемых форматов или если загружать png файл не из потока а напрямую из файла, то все также работает нормально.


 
Efir   (2007-11-24 20:33) [1]

Сталкивался тоже с такой же проблемой, задавал вопрос сдесь же, но так и не решил.


 
Efir   (2007-11-24 20:36) [2]

И что интересно, если запустить скомпиленный exe, то всё работает нормально.


 
S7r ©   (2007-11-24 23:09) [3]

А вот у меня скомпилированный exe как раз и не работает. Пишет: Access violation at address 78208BAA in module "gdiplus.dll". Read of address 51EC8B91.
Если запустить в режиме отладки то вылетает окно с CPU и если продолжить выполнение, то все нормально нарисует. Причем в CPU он мне как я понял указывает на какой-то break point в ntdll. Такое чувство, что где-то переполнение и возврат идет не туда...


 
antonn ©   (2007-11-24 23:21) [4]

после StreamAdapt:=TStreamAdapter.Create(MemStream, soOwned); попробывать
StreamAdapt.position:=0;


 
S7r ©   (2007-11-24 23:46) [5]

Установка:
StreamAdapt.Stream.Position:=0;
не помогла. Все тоже самое.
С MemStream.Position таже фигня.


 
antonn ©   (2007-11-25 00:33) [6]

а Img:=TGPImage.Create(StreamAdapt); что требует? путь до файла или поток?


 
S7r ©   (2007-11-25 09:56) [7]

Конструктор у TGPImage перегружен.

 constructor TGPImage.Create(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE);

 constructor TGPImage.Create(stream: IStream; useEmbeddedColorManagement: BOOL  = FALSE);



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
15-1243110603
Юрий
2009-05-24 00:30
2009.07.26
С днем рождения ! 24 мая 2009 воскресенье


2-1243791655
Сергей
2009-05-31 21:40
2009.07.26
TTreeNode


2-1243837873
Desyatnik
2009-06-01 10:31
2009.07.26
Поиск


15-1243197004
Юрий
2009-05-25 00:30
2009.07.26
С днем рождения ! 25 мая 2009 понедельник


15-1243234883
b/@.
2009-05-25 11:01
2009.07.26
Какой метод разработки предпочитаете ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский