zoukankan      html  css  js  c++  java
  • 将图片以字符串方式保存

    将图片转换成字符
     
    delphi的*.dfm文件
    mht的文件
     
    //------------------------------------------------------------------------------
    //jpg转换为 txt字符串
    //JpegToText('C:1.jpg', 'C:1.txt');
    function JpegToText(jpgFileName: string; TxtFileName: string): string;
    var
      FileStream: TFileStream;
      StringStream: TStringStream;
      FSize: integer;
      FileData: string;
      i: integer;
      DataStr: string;
    begin
      try
        FileStream := TFileStream.Create(jpgFileName, fmOpenRead);
        StringStream := TStringStream.Create(EmptyStr);
        FSize := FileStream.Size;
        StringStream.CopyFrom(FileStream, FSize);
        FileData := StringStream.DataString;
        DataStr := EmptyStr;
        for i := 1 to Length(FileData) do
        begin
          DataStr := DataStr + InttoHex(Ord(FileData[i]), 2);
        end;
        Result := DataStr;
      finally
        freeandnil(FileStream);
        freeandnil(StringStream);
      end;
    end;

    //------------------------------------------------------------------------------
    //TextToJpeg('C:1.txt', 'C:2.jpg');
    function TextToJpeg(TxtFileName: string; JpegFileName: string): TPicture;
    var
      buf: array of Byte;
      DataLength: Integer;
      i: Integer;
      DataStr: string;
      ByteFile: file of byte;
      tmpFileName: string;
    begin
      with TStringList.Create do
      begin
        LoadFromFile(TxtFileName);
        DataStr := Text;
        Free;
      end;
      DataLength := Length(DataStr) div 2 - 1;
      SetLength(buf, DataLength);
      for i := 1 to DataLength do
      begin
        buf[i - 1] := StrToInt('$' + copy(DataStr, (i - 1) * 2 + 1, 2));
      end;
      tmpFileName := ExtractFilePath(ParamStr(0)) + 'tmp.jpg';
      AssignFile(ByteFile, tmpFileName);
      Rewrite(ByteFile);
      for i := 0 to DataLength - 1 do
      begin
        write(ByteFile, buf[i]);
      end;
      CloseFile(ByteFile);

      Result:=TPicture.Create;
      Result.LoadFromFile(tmpFileName);  //慢
      DeleteFile(tmpFileName);
    end;
     
     
     
    //jpg转换为 txt字符串 并保存为txt
    procedure SaveJpgToTextFile(jpgFileName: string; TxtFileName: string);
    begin
        with TStringList.Create do
        begin
          Text := JpegToText(jpgFileName,TxtFileName);
          SaveToFile(TxtFileName);
          Free;
        end;
    end;
     
    procedure SavePictureToFile(pitcture:TPicture;FileName:string);
    var
        pic:TPicture;
    begin
        pic:=TPicture.Create;
        pic:=pitcture;
        pic.SaveToFile(FileName);
      //  pic.Free;
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
      SavePictureToFile(Image1.Picture,'C:3.jpg');
    end; 
     
     
     





  • 相关阅读:
    队列简单题
    排序篇(c++/c实现)
    天河计算机0.5
    BZOJ2301/LG2522 「HAOI2011」Problem B 莫比乌斯反演 数论分块
    BZOJ1391/LG4177 「CEOI2008」order 最大权闭合子图
    BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路
    BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路
    BZOJ2339/LG3214 「HNOI2011」 卡农 组合数学
    LG1840 Color the Axis 线段树
    LG5239 回望京都 组合数+暴力
  • 原文地址:https://www.cnblogs.com/xe2011/p/3876026.html
Copyright © 2011-2022 走看看