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

Вниз

как IPicture сохранить в файл (BMP)?   Найти похожие ветки 

 
Igit   (2003-11-22 13:58) [0]

как


 
Бином Ньютоныч   (2003-11-22 17:07) [1]

А SaveAsFile на что?


 
Igit   (2003-11-22 17:28) [2]

В msdn это
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/ctin_p_2did.asp

SaveAsFile(
IStream,//Pointer to stream where picture writes its data
fSaveMemCopy, //Indicates whether to save the picture
//in memory
pcbSize //Receives a pointer to the number of bytes written
//to stream
);


Я так понял она сохраняет картинку в IStream, a если у меня в IPicture не bmp а jpg? Или это без разници?
И как потом из IStream в файл перегнать?


 
Igit   (2003-11-22 17:39) [3]

про OleSavePictureFile в MSDN ничего не нашел...


 
Бином Ньютоныч   (2003-11-22 18:37) [4]

так попробуй:
IPict: IPicture;
IStm: IStream;
Stm: TMemoryStream;
Pict: TOicture;
Bmp: TBitmap;
Sz: integer;

Stm:=TmemoryStream.Create;
IStm:=TStreanAdapter.Create(Stm);
IPict.SaveAsFile(IStm, false, @Sz);
Stm.Position:=0;
Pict:=TPicture.Create;
Pict.LoadFromStream(Stm);
if not (Pict.Graphic is TBitmap) then
begin
Bmp:=TBitmap.Create;
Bmp.Assign(Pict.Graphic);
Bmp.SaveToFile(FileName);
Bmp.Free;
end
else
Pict.Bitmap.SaveToFile(FileName);
Только я не роверял, расскажи что получилось


 
Бином Ньютоныч   (2003-11-22 18:52) [5]

Ага, с TPicture проблемс:( Вместо него вот это используй

uses
SysUtils, Classes, Graphics;

type
TMultiFmtPicture = class(TPicture)
public
{ Public declarations }
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);
end;

implementation

type
TMReader = class(TReader)
private
FStream: TStream;
public
constructor Create(Stream: TStream; BufSize: Integer);
procedure DefineBinaryProperty(const Name: string;
ReadData, WriteData: TStreamProc;
HasData: Boolean); override;
end;

TMWriter = class(TWriter)
private
FStream: TStream;
public
constructor Create(Stream: TStream; BufSize: Integer);
procedure DefineBinaryProperty(const Name: string;
ReadData, WriteData: TStreamProc;
HasData: Boolean); override;
end;

const
SErrorParam = "Invalid Stream parameter!";

{ TMultiFmtPicture }

procedure TMultiFmtPicture.LoadFromStream(Stream: TStream);
var
Rd:TMReader;
begin
if not Assigned(Stream) then
raise Exception.Create(SErrorParam);
Rd:=TMReader.Create(Stream , 0);
try
DefineProperties(Rd);
Changed(Self);
finally
Rd.Free;
end;
end;

procedure TMultiFmtPicture.SaveToStream(Stream: TStream);
var
Wr:TMWriter;
begin
if not Assigned(Stream) then
raise Exception.Create(SErrorParam);
Wr:=TMWriter.Create(Stream , 0);
try
DefineProperties(Wr);
finally
Wr.Free;
end;
end;

{ TMWriter }

constructor TMWriter.Create(Stream: TStream; BufSize: Integer);
begin
inherited;
FStream:=Stream;
end;

procedure TMWriter.DefineBinaryProperty(const Name: string; ReadData,
WriteData: TStreamProc; HasData: Boolean);
begin
WriteData(FStream);
end;

{ TMReader }

constructor TMReader.Create(Stream: TStream; BufSize: Integer);
begin
inherited;
FStream:=Stream;
end;

procedure TMReader.DefineBinaryProperty(const Name: string; ReadData,
WriteData: TStreamProc; HasData: Boolean);
begin
ReadData(FStream);
end;



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

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

Наверх




Память: 0.46 MB
Время: 0.007 c
1-93419
Вомбат
2004-01-16 15:56
2004.01.29
Запись / чтение компоненты из ресурса


14-93674
BlackTiger
2003-12-30 13:43
2004.01.29
Delphi8. Что-то я не понял прикола...


3-93342
dimablind
2004-01-03 19:10
2004.01.29
locate


1-93510
Filatov
2004-01-18 18:34
2004.01.29
Как программно узнать путь к папке Windows


6-93613
strong
2003-11-24 13:57
2004.01.29
проблема com/ip





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский