Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Media";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-68296
starik30
2003-08-06 16:55
2003.08.21
Как динамически скрывать/показывать формы на TaskBar


3-68155
николай
2003-07-29 12:05
2003.08.21
TPageControl


3-68250
II
2003-07-25 16:41
2003.08.21
Как отловить изменение значения в TTable


9-68143
YO
2003-02-19 14:23
2003.08.21
КАК Вывести на экран Opengl А


1-68300
BdfyjdX
2003-08-06 16:00
2003.08.21
Каркас минимального веса!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский