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