如何把 bmp ,gif 图片转换为二进制,然后又转换回来?多谢!(马上送分)

求助:各位大哥怎么把 bmp ,gif 图片转换为二进制,然后又转换回来?谢谢!(马上送分)
请教:
各位大哥怎么把   bmp   ,gif   图片转换为二进制?
然后把   二进制   字符串转换   为   bmp   ,gif   图片

procedure   TForm1.Button1Click(Sender:   TObject);
var
        mystream:   TStream;
        I:   Integer;
        mybyte:   Byte;
        mystr:   string;
begin
        mystream   :=   TMemoryStream.Create;
        if   Opendialog1.Execute   then
        begin
                    TMemoryStream(mystream).LoadFromFile(Opendialog1.FileName);
        end;
        image1.Picture.Bitmap.LoadFromStream(mystream);
        mystream.Position   :=   0;
        for   I   :=   1   to   mystream.Size   do
        begin
                    Application.ProcessMessages;
                    mystream.Read(mybyte,   1);
                    mystr   :=   mystr+IntToHex(mybyte,2);
                    if   ((I   mod   14)   =   0)   then
                    begin
                    Memo1.Lines.Add(mystr);
                    mystr   :=   ' ';
                    end;
        end;
        mystream.Free;
end;


这是一个把   BMP   图片转换为   二进制的程序(网上找的)

各位大哥,可以给我其他三个程序吗?

谢谢!


------解决方案--------------------
你用bmp.loadfromfile得到图片,bmp.scanline就能得到图片的数值,10进制、16进制知识你在看到的时候不一样写法,本质都是二进制啊!!!
------解决方案--------------------
你原来的代码(稍作修改), 可以将任何文件(能打开的)以二进制格式显示在一个Memo中的:

procedure TForm1.Button1Click(Sender: TObject);
var
mystream: TStream;
I: Integer;
mybyte: Byte;
mystr: string;
begin
mystream := TMemoryStream.Create;
try
if Opendialog1.Execute then
begin
TMemoryStream(mystream).LoadFromFile(Opendialog1.FileName); //Filename所对应的可以是任何一个文件
mystream.Position := 0;
mystr := ' ';
for I := 0 to mystream.Size - 1 do
begin
Application.ProcessMessages;
mystream.Read(mybyte, 1);
mystr := mystr + IntToHex(mybyte, 2);
if (I <> 0 ) and (I mod 16 = 0) then
begin
Memo1.Lines.Add(mystr);
mystr := ' ';
end;
end;
if mystr <> ' ' then Memo1.Lines.Add(mystr);
end;
finally
mystream.Free;
end;
end;