• 将图片以字符串方式保存


    将图片转换成字符
     
    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; 
     
     
     





  • 相关阅读:
    (二)shell中的变量
    (一)shell脚本入门
    java的动态代理机制详解
    docker学习
    一、Spring Boot 入门
    如何高效的利用博客园?
    CMake入门指南
    TortoiseSVN安装使用
    TortoiseSVN配置和使用教程
    脑电采集 地电极和参考电极的作用和区别
  • 原文地址:https://www.cnblogs.com/xe2011/p/3876026.html
Copyright © 2020-2023  润新知