Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка фото в формате JPG в компонент Image. [D6, Win95/98, Win2k]


Сергей Нечепуренко ©   (2002-09-06 11:30:00) 

Как программно загрузить в компонент Image изображение в формате JPG ?
Делаю это командой
Image1.Picture.LoadFromFile("c:\photo.jpg");
Выдается сообщение об ошибке
‘Unknkown picture file extension (.jpg)’
Причем если программно загружать bmp файл, то все нормально.
Заранее благодарю, Сергей.


BOA_KAA   (2002-09-06 12:30:00) [1]

2Smithson © (06.09.02 12:07) & Kaban © (06.09.02 12:08)

... сдался:-)))))


Kaban   (2002-09-06 12:09:00) [2]

2 Smithson © (06.09.02 12:07)
Вот такой код действительно корректен


Kaban   (2002-09-06 12:08:00) [3]

Да но в вашем случае при возникновении ошибки на этапе
JPG.LoadFromFile
в Image ничего не загрузится, т.к. управление сразу перейдет к блоку finally


Smithson   (2002-09-06 12:07:00) [4]

Неа. Так у тебя не все файлы пойлут... Я делал примерно так:

var
bmp: TBitmap;
jpg: TJPEGImage;
begin
if not OpenPictureDialog1.Execute then Exit;

try
jpg:=TJPEGImage.Create;
bmp:=TBitmap.Create;
try
jpg.LoadFromFile(OpenPictureDialog1.FileName);
except
// А нафиг нам его ошибки?
end;
bmp.Assign(jpg);
Image1.Picture.Assign(bmp);
except
// А вот тут уже что-то не то, файл не прочитался, надо делать выводы
end;
jpg.Free;
bmp.Free;


BOA_KAA   (2002-09-06 12:02:00) [5]

2Smithson © (06.09.02 11:56)

Точно, просто я не стал добавлять это дело в код... Будет несколько правильнее, ежели так:

uses JPEG;

procedure TfmMain.FormCreate(Sender: TObject);
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
if not OpenPictureDialog1.Execute then Exit;

try
jpg:=TJPEGImage.Create;
bmp:=TBitmap.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
bmp.Assign(jpg);
Image1.Picture.Assign(bmp);
finally
jpg.Free;
bmp.Free;
end;
end;


Smithson   (2002-09-06 11:56:00) [6]

Там есть масса глюков. Вариант от BOA_KAA действительно лучше, чем просто LOadFrom..., но место jpg.LoadFromFile надо загнать в try except и уже по итогам решать, прочелся имадж или нет.
Дело в том, что при загрузке файла JPG.LoadFromFile дает ошибки по неким своим соображениям (не совпадение версий, неизвестный тег, нарушена целостность файла ...) но при этом файл ВСЕ РАВНО ГРУЗИТ.
Так что ошибки изолируй и работай.


Kaban   (2002-09-06 11:54:00) [7]

да что вы говорите, а у меня почему-то все работает


BOA_KAA   (2002-09-06 11:50:00) [8]

2Kaban © (06.09.02 11:46)

Не, не фига, так не прокатывает даже при включенном JPEG"е


BOA_KAA   (2002-09-06 11:48:00) [9]

2Kaban © (06.09.02 11:46)

Ща попробую...


Kaban   (2002-09-06 11:46:00) [10]

2 BOA_KAA

Круто, но по-моему
Image1.Picture.LoadFromFile("c:\photo.jpg");
гораздо проще


ЮЮ   (2002-09-06 11:43:00) [11]

A если добавить RxGif (при установленном RxLib) то и GIF-ы читать будет :-)


BOA_KAA   (2002-09-06 11:43:00) [12]

uses JPEG;

procedure TfmMain.FormCreate(Sender: TObject);
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
if not OpenPictureDialog1.Execute then Exit;
jpg:=TJPEGImage.Create;
bmp:=TBitmap.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
bmp.Assign(jpg);
Image1.Picture.Assign(bmp);
jpg.Free;
bmp.Free;
end;


Kaban   (2002-09-06 11:41:00) [13]

Включи в uses стандартный модуль JPEG


Наверх

Титульная страница Поиск, карта сайта Написать письмо