Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1228498
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2008-08-31 09:52:09



请问下delphi中如何将指目录下的图片化成二进制流输出?  
  现在网上关于这块好像讲得都是关于发何人sql数据库中取。而我是想将目录下的图片化成二进制数据流,不知有哪位高手做过,指点一二,我不知怎么做起?

var  
      S:   TMemoryStream;  
  begin  
      S   :=   TMemoryStream.Create;  
      S.LoadFrom('目录\文件名');  
  end;  
 

var  
      S:   TMemoryStream;  
  begin  
      S   :=   TMemoryStream.Create;  
      S.LoadFromFile('目录\文件名');  
  end;  
   
 

楼上正解  
  按照楼上的,你要的结果是再把S输出就行了

那如何得到它的二进制码呢?  
  {  
              0A544A504547496D616765693C0000FFD8FFE000104A46494600010200006400  
              640000FFEC00114475636B79000100040000002A0000FFEE002141646F626500  
              64C00000000103001003030609000018750000257500003C67FFDB0084000B08  
              080808080B08080B100A090A10130E0B0B0E1316111113111116151112121212  
              111515191A1B1A1915212124242121302F2F2F3036363636363636363636010C  
  }

换成2进制代码??  
  不会  
  帮顶  
  关注中

怎么输出呀大哥,换成二进制码...

这样好象可以,没测试,你去试试吧;  
  var  
      S:   TMemoryStream;  
      x:   string;  
  begin  
      S   :=   TMemoryStream.Create;  
      S.LoadFromFile('目录\文件名');  
      SetLength(x,   s.Size);  
      move(s.memory^,   x[1],   s.size);  
      s.free;  
      显示X;  
  end;  
 

流里面本身就是二进制码,你说的应该是如何显示二进制码

to   zhang3652   非常感谢,我试过了,不行哦。  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      GetString,filenamepath:string;  
      astream:TMemoryStream;  
      buffer:array   of   char;  
  begin  
      if   OpenDialog1.Execute   then  
      begin  
          filenamepath:=OpenDialog1.FileName;  
          astream:=TMemoryStream.Create;  
          astream.LoadFromFile(filenamepath);  
          setlength(buffer,astream.size);  
          move(astream.memory^,buffer[0],astream.Size);  
          GetString:=string(buffer);  
          Edit1.Text:=   GetString;  
      end;  
   
    得不到二进码

 
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      S:   TStream;  
      B:   TStream;  
      I:   Integer;  
      C:   Byte;  
      D:   string;  
  begin  
      B   :=   TMemoryStream.Create;  
      Image1.Picture.Bitmap.SaveToStream(B);  
      B.Position   :=   0;  
      S   :=   TFileStream.Create('d:\111.txt',   fmCreate);  
      for   I   :=   0   to   B.Size   -   1   do  
      begin  
          B.Read(C,   1);  
          D   :=   IntToHex(C,   2);  
          S.Write(D[1],   2);  
          if   (I   <>   0)   and   ((I   mod   32)   =   0)   then  
          begin  
              D   :=   #13   +   #10;  
              S.Write(D[1],   2);  
          end;  
      end;  
      B.Free;  
      S.Free;  
  end;  
 

按搂住的要求应该把  
  Image1.Picture.Bitmap.SaveToStream(B);  
  改为  
  TMemoryStream(B).LoadFromFile('目录\文件名');

呵呵,谢谢楼上两位,我试试。

呵呵,搞定了。。  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
      S:   TStream;  
      B:   TStream;  
      I:   Integer;  
      C:   Byte;  
      D:   string;  
  begin  
      B   :=   TMemoryStream.Create;  
    //   Image1.Picture.Bitmap.SaveToStream(B);  
      TMemoryStream(B).LoadFromFile('E:\Delphi程序\Picture\jz12.jpg');  
   
      B.Position   :=   0;  
      S   :=   TFileStream.Create('d:\111.txt',   fmCreate);  
      for   I   :=   1   to   B.Size   do  
      begin  
          B.Read(C,   1);  
          D   :=   IntToHex(C,   2);  
          S.Write(D[1],   2);  
          if   ((I   mod   32)   =   0)   then  
          begin  
              D   :=   #13   +   #10;  
              S.Write(D[1],   2);  
          end;  
      end;  
      B.Free;  
      S.Free;  
   
  end;

呵呵,搞定了。。  
  =============================================================  
  你提问表达方式有问题,这不是二进制流输出,应该叫二进制流的文本格式输出,你早说清楚,答案早出来了.



[新闻]Google推出Android Market挑战App Store
阅读(896) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~