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

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

BMP -> GIF ???


RAA ©   (2003-04-15 09:10:00) 

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


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

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




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

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


RAA   (2003-04-24 08:56:00) [3]

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


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

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


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

лучше воспользоваться 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-17 10:12:00) [6]

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


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

А в чем проблема-то? Делаешь в 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;


Наверх

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