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

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

Опять JPEG [D6, WinME]


SPeller ©   (2002-04-14 06:59:00) 

Подскажите пожалуйста, как в объект JPG:TJPEGImage загрузить JPEG рисунок из Image ??


Вася Пупкин   (2002-04-16 02:56:00) [1]

хм... может я чего не понимаю, но что, по твоему, будет в Image1.Picture.Bitmap ?
А чтение файла - ну, надо же мне было его откуда-нить загрузить, ентот JPEG, я же не знаю, откуда ты его грузишь и как :)

Ну, еще можно так (извини, для полноты примера опять с файлами, конкретно твоё выделю жирным).Совсем "обойтись без лишних объектов в этом процессе" не выйдет :

var
s : string;
JPEG: TJPEGIMAGE;
begin

OpenDialog1.DefaultExt := ".jpg";
OpenDialog1.Filter := " (*.jpg)|*.JPG";
OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist, ofHideReadOnly ];
if OpenDialog1.Execute then
begin
JPEG := TJPEGIMAGE.Create;
try
Image1.Picture.Loadfromfile(OpenDialog1.FileName);
s:= ChangeFileExt(OpenDialog1.FileName,".BMP");
//Это твоё:
JPEG.Assign(Image1.Picture.Graphic);
Image1.Picture.Bitmap.Assign(jpeg);

//
Image1.Picture.Bitmap.saveToFile(s);
ShowMessage(OpenDialog1.FileName + " Saved to " + s);
finally
JPEG.Free;
end;
end;
end;


SPeller   (2002-04-15 05:05:00) [2]

Оно да, но рисунок загружен в имаг в Ран-тайме и никаких сохранений/чтений файлов мне не надо. Вот имаг с рисунком, как его преобразовать ??


Вася Пупкин   (2002-04-14 10:08:00) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
JPEG: TJPEGIMAGE;
begin

OpenDialog1.DefaultExt := ".jpg";

OpenDialog1.Filter := " (*.jpg)|*.JPG";
OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist, ofHideReadOnly ];
if OpenDialog1.Execute then
begin
JPEG := TJPEGIMAGE.Create;
try
JPEG.Loadfromfile(OpenDialog1.FileName);
s:= ChangeFileExt(OpenDialog1.FileName,".BMP");
Image1.Width := JPEG.Width;
Image1.Height := JPEG.Height;
Image1.Canvas.Draw(0,0,JPEG);
Image1.Picture.SaveToFile(s);

ShowMessage(OpenDialog1.FileName + " Saved to " + s);
finally
JPEG.Free;
end;
end;
end;


SPeller   (2002-04-14 08:52:00) [4]

Извините, совсем не так вопрос поставил.... :)

Мне надо, чтобы в Image в котором JPEG рисунок, оказался тот же рисунок но в BMP формате.
Делаю так :


var b:tbitmap;j:tjpegimage;
begin

b:=tbitmap.create;
j:=tjpegimage.Create;
j.Assign(img.Picture);
B.Assign(j);
img.Picture:=nil;
img.Picture.Bitmap:=b;
b.Free;
j.Free;


Работает, но мне очень не нравится выделенный кусок. Преобразования вроде
b.Assign(img.Picture);
или
b.Assign(tjpegimage(img.Picture));
не проходят.
Можно ли как-нибудь обойтись без лишних объектов в этом процессе, или вообще провести всё это внутрях Image ??


Наверх

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