![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять 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 ??