Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

Опять JPEG   Найти похожие ветки 

 
SPeller ©   (2002-04-14 06:59) [0]

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


 
SPeller ©   (2002-04-14 08:52) [1]

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

Мне надо, чтобы в 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 ??


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

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-15 05:05) [3]

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


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

хм... может я чего не понимаю, но что, по твоему, будет в 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;



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

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
14-71333
Geser
2002-07-25 22:06
2002.08.22
Люди, подкиньте идею для программы.


1-71146
SS1
2002-08-13 14:10
2002.08.22
День недели из даты


3-70955
Mihey
2002-08-03 11:46
2002.08.22
Помогите, как с помощью ADO взять поле из базы данных


1-71177
cult
2002-08-09 16:15
2002.08.22
Как сделать форму Always-on-top?


14-71356
Sam Stone
2002-07-27 21:02
2002.08.22
CreateProcess