Zapisywanie image1

0

mam cos takiego

var
f : file;
stream : tmemorystream;
begin
stream := tmemorystream.create;
image.Picture.Bitmap.SaveToStream(stream);
stream.Position := 0;
assignfile(f,outputfile);
rewrite(f,1);
seek(f,1);
blockwrite(f,stream,sizeof(stream));
closefile(f);
stream.free;
end;

i to ma za zadania zapisać plik z image (bitmapę) do pliku lecz zawsze wychodzi mi ze plik ma 16 bajtów :)))

co tu jest źle?

0

a nie lepiej

Image1.Picture.SaveToFile('plik.bmp');

???--[ Delphi... i wszystko jasne ]

0

TheChoseN napisał:
a nie lepiej
&gt
&gtImage1.Picture.SaveToFile('plik.bmp');

Przy okazji tego postu mam pytanko. Używałem w moim programie powyższego zapisu jak i również LoadFromFile(). Po tej operacji program zaczynał chodzić jak na 286 do czasu wyczyszczenia obrazu: Image1-&gtPicture-&gtAssign(NULL). Czy ktoś wie dlaczego??--"Imagination is more important than knowledge." - A. Einstein

0

TheChoseN napisał:
a nie lepiej
&gt
&gtImage1.Picture.SaveToFile('plik.bmp');
&gt

Albo jak musisz ten stream to:

Stream.SaveToFile('Nazwa.bmp');

Wszystkie rzeczy dynamiczne (obiekty, tablice dynamiczne, stringi) sa naprawde tylko referencjami to wlasciwych danych. Zapisales ZIOMBER referencje (wskaznik, handle, czy jak to tam Delphi w srodku zapisuje) do streamu, a nie stream.

--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

ej ale ja chce tak jak ja napisałem (tym sposobem) wiec nie piszcie jak nie wiecie ;]
(nie dotyczy pq) :)))))

0

juz wiem:
(zrobilem na stringu, bo latwiej sprawdzac czy dziala, przerob sobie na Image)

procedure TForm1.Button1Click(Sender: TObject);
var
Bufor: string;
stream :TMemoryStream;
F: file;

begin
Bufor:='testujemy';
Stream:=TMemoryStream.Create;
Stream.WriteBuffer(Bufor[1], Length(Bufor));

AssignFile(F,'x:\pq\ziomber.txt');
Rewrite (F,1);
BlockWrite(F,Stream.Memory^, Stream.Size);
CloseFile(F);
Stream.Free;

end;--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

Napisłem to już parę godzin temu, ale zerwało mi połączenie :[[

var
f : TFileStream;
stream : tmemorystream;
begin
f := TFileStream.Create(NazwaPliku, fmCreate);
stream := tmemorystream.create;
image.Picture.Bitmap.SaveToStream(stream);
stream.Position := 0;
f.CopyFrom(stream, stream.Size);
FreeAndNil(stream);
FreeAndNil(f);
end;

Tu akourat najlepiej wykorzystać właśnie TFileStream.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Dryobates napisał:
&gtf : TFileStream;

pozdrowienia Dryobates!!!! {browar} {browar} {browar} (wiesz o co chodzi)--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

pq napisał:
pozdrowienia Dryobates!!!! {browar} {browar} {browar} (wiesz o co chodzi)

We wcześniejszej wersji postu było coś takiego:

"Tym razem pq nie powie mi, że lepiej użyć tu BlockRead" :D --Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

hehe widze pq ze mam nawet osobny plik na twoim dysku :P
x:\pq\ziomber.txt :)))))))

uronie łezkę ; )

1 użytkowników online, w tym zalogowanych: 0, gości: 1