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

Вниз

BMP -> GIF ???   Найти похожие ветки 

 
RAA ©   (2003-04-15 09:10) [0]

Мне нужно перевести BMP -> GIF с 8 битной палитрой
отображать мне его не нужно...
далее я его хочю по HTTP протоколу откинуть клиенту....
как это сделать?


 
Карелин Артем ©   (2003-04-15 15:02) [1]

А в чем проблема-то? Делаешь в Run-time компонент, работающий с гифами, например RxGifAnimator из пакета RxLib, считываешь в него битмап и сохраняешь гиф в поток.
Дальше средствами WebApplication.Response отсылаешь полученный поток клиенту, устанавливавая ContentType в нужный тип/подтип.
Вот пример по формированию jpeg:
This example shows an OnAction event handler that sends a response message that contains a jpeg image taken from a database table.

procedure TCustomerInfoModule.CustomerInfoModuleGetImageAction( Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
Jpg: TJpegImage;
S: TMemoryStream;
P: TPicture;
begin
Jpg := TJpegImage.Create;
try
P := TPicture.Create;
P.Assign(BioLifeGraphic);
Jpg.Assign(P.Graphic);
S := TMemoryStream.Create;
try
( S)
А в чем проблема-то? Делаешь в Run-time компонент, работающий с гифами, например RxGifAnimator из пакета RxLib, считываешь в него битмап и сохраняешь гиф в поток.
Дальше средствами WebApplication.Response отсылаешь полученный поток клиенту, устанавливавая ContentType в нужный тип/подтип.
Вот пример по формированию jpeg:
This example shows an OnAction event handler that sends a response message that contains a jpeg image taken from a database table.

procedure TCustomerInfoModule.CustomerInfoModuleGetImageAction( Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
Jpg: TJpegImage;
S: TMemoryStream;
P: TPicture;
begin
Jpg := TJpegImage.Create;
try
P := TPicture.Create;
P.Assign(BioLifeGraphic);
Jpg.Assign(P.Graphic);
S := TMemoryStream.Create;
try
Jpg.SaveToStream(S);
S.Position := 0;

Response.ContentType := "image/jpeg";
Response.ContentStream := S;
Response.SendResponse;
finally
P.Free;
S.Free;
end;
finally
Jpg.Free;
end;
end;


 
RAA ©   (2003-04-17 10:12) [2]

А где можно взять RxLib?


 
Владимир Васильев ©   (2003-04-17 13:34) [3]

лучше воспользоваться GDI+ (для 2K нужна DLL - в XP уже всё есть)
хидеры,хелр и примеры лежат на http://www.progdigy.com/


..............
implementation
uses GDIPAPI, GDIPOBJ, GDIPUTIL, ActiveX;
.........

var
encoderClsid : TGUID;
stat : TStatus;
Image : TGPImage;
Stream : TMemoryStream;
.......

//можно грузить и из потока
Image := TGPImage.Create("name.bmp");

Stream:=TMemoryStream.Create;
try
// получить CLSID для Gif encoder.
GetEncoderClsid("image/gif", encoderClsid);
// сохранить в файл или поток попутно конвертировав
stat:= image.Save("name.gif",ncoderClsid, nil);
stat:= image.Save(TStreamAdapter.Create(Stream),ncoderClsid, nil);

if (stat = Ok) then // юзаем stream , например:
( "name2.gif") лучше воспользоваться GDI+ (для 2K нужна DLL - в XP уже всё есть)
хидеры,хелр и примеры лежат на http://www.progdigy.com/


..............
implementation
uses GDIPAPI, GDIPOBJ, GDIPUTIL, ActiveX;
.........

var
encoderClsid : TGUID;
stat : TStatus;
Image : TGPImage;
Stream : TMemoryStream;
.......

//можно грузить и из потока
Image := TGPImage.Create("name.bmp");

Stream:=TMemoryStream.Create;
try
// получить CLSID для Gif encoder.
GetEncoderClsid("image/gif", encoderClsid);
// сохранить в файл или поток попутно конвертировав
stat:= image.Save("name.gif",ncoderClsid, nil);
stat:= image.Save(TStreamAdapter.Create(Stream),ncoderClsid, nil);

if (stat = Ok) then // юзаем stream , например:
Stream.SaveToFile("name2.gif");
finally
Stream.free;
end;

image.Free;
...........


 
RAA ©   (2003-04-24 08:54) [4]

А как в объект Image перенести графику из TBitmap???


 
RAA ©   (2003-04-24 08:56) [5]

Только не говорите что-бы через сохранение на винте...-)))
У меня BMP ники по 2-5 мега...теряется весь смысл...


 
Карелин Артем ©   (2003-04-24 14:07) [6]

А про метод Assign ты слышал? По моему примеру глазками пробежался?


 
Владимир Васильев ©   (2003-04-24 15:48) [7]

>А как в объект Image перенести графику из TBitmap
если вопрос относится к GDI+, то можно, например, использовать перегружаемый конструктор ( через IStream):
......
Bitmap : TBitmap
.....
Bitmap.SaveToStream(Stream);
Image := TGPImage.Create((TStreamAdapter.Create(Stream));






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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
14-68484
Vlad Oshin
2003-08-06 09:08
2003.08.21
о как бывает :)


1-68258
Miralex
2003-08-07 10:05
2003.08.21
значки в treeview


1-68301
still
2003-08-06 14:14
2003.08.21
Символы типа ^H, ^X и т.п.


4-68588
Борис К.
2003-06-18 11:17
2003.08.21
Проблема с ProgressBar и копированием файлов под XP...


3-68201
M126
2003-07-28 12:08
2003.08.21
Редактирование таблицы запросом